最近有个项目需要用程序输出代码。
由于比较复杂,边整理缩进等再输出,显得非常麻烦。
所以,想到直接不管格式输出,然后再排版。
现在把代码共享给大家。
CodeFormater.java
package test.eclipse.plugin.util;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Map;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.ToolFactory;
import org.eclipse.jdt.core.formatter.CodeFormatter;
import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
import org.eclipse.text.edits.TextEdit;
public class CodeFormater {
//private String codeFormatFile;
private String fileEncoding;
private Map options;
private CodeFormatter codeFormatter;
public CodeFormater(String fileEncoding) {
init();
//this.codeFormatFile = codeFormatFile;
this.fileEncoding = fileEncoding;
}
public CodeFormater() {
init();
//this.codeFormatFile = codeFormatFile;
}
private void init() {
fileEncoding = "UTF-8";
options = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
// // initialize the compiler settings to be able to format 1.6 code
options.put(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_1_6);
options.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_1_6);
options.put(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_1_6);
//
// // change the option to wrap each enum constant on a new line
// options.put(
// DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_ENUM_CONSTANTS,
// DefaultCodeFormatterConstants.createAlignmentValue(
// true,
// DefaultCodeFormatterConstants.WRAP_ONE_PER_LINE,
// DefaultCodeFormatterConstants.INDENT_ON_COLUMN));
// instanciate the default code formatter with the given options
codeFormatter = ToolFactory.createCodeFormatter(options);
}
public void formatFile(String sourceFileName) {
File file = new File(sourceFileName);
BufferedReader in = null;
BufferedWriter out = null;
String line;
String lineSeperator = System.getProperty("line.separator");
try {
// retrieve the source
in = new BufferedReader(new InputStreamReader(new FileInputStream(file), fileEncoding));
StringBuffer sb = new StringBuffer();;
while ((line = in.readLine()) != null) {
sb.append(line);
sb.append(lineSeperator);
}
in.close();
in = null;
String contents = sb.toString();
IDocument doc = new Document(contents);
// create delta
TextEdit edit = codeFormatter.format(
CodeFormatter.K_COMPILATION_UNIT, // format a compilation unit
contents, // source to format
0, // starting position
contents.length(), // length
0, // initial indentation
lineSeperator); // line separator
// apply changes to content
edit.apply(doc);
// output
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), fileEncoding));
String output = doc.get();
out.write(output);
out.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
} catch (Exception e) {
}
}
}
}
调用
CodeFormater codeFormater = new CodeFormater();
codeFormater.formatFile("需要排版的代码的路经");
需要用到Eclipse插件里的一些库
org.eclipse.jdt.core
org.eclipse.jdt.text
参考网站
http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.jdt.doc.isv/guide/jdt_api_codeformatter.htm
分享到:
相关推荐
CodeFormat,正如其名,是一款专为优化代码格式而设计的工具,它能够帮助开发者将杂乱无章的代码整理得井井有条,极大地提升了代码的可读性。尤其在团队协作的项目中,统一的代码风格可以减少沟通成本,提高代码审查...
**JCF (Jedi Code Format) Delphi代码格式化工具** JCF,全称为Jedi Code Format,是一款专为Delphi编程语言设计的代码格式化工具。它由Jedi项目团队开发,旨在帮助开发者自动整理和格式化Delphi源代码,以保持代码...
JSFormat.rar是一个针对JavaScript代码的格式化工具,它可以帮助开发者将混乱的、难以阅读的JavaScript代码整理成标准、易读的格式,提高代码的可维护性。 这个工具是用Visual C++(VC)开发的,VC是Microsoft公司...
"C语言格式(format)化下载" 主题涉及到的就是这样一个工具,用于自动将C语言的源代码按照特定的格式进行整理。 C语言格式化器,也被称为代码美化器或代码格式化器,是一种工具,它可以自动调整代码的缩进、空格、...
标题中的"formater"指的是代码格式化工具,这类工具在编程领域中广泛使用,用于自动按照特定规范或约定对代码进行美化和整理。这通常包括缩进、换行、命名规则等方面的调整,使得代码更易读、易维护。在团队开发中,...
1. **代码格式化**:HTML代码往往在编写过程中为了快速输入而显得较为混乱,`HTML_Format`类可能包含方法来自动整理代码的缩进、换行,使其符合一定的编码规范。 2. **标签闭合检查**:HTML标签需要正确地成对出现...
【标题】"CircuitHub的Haskell源代码格式化程序 - Form Source Code" 【描述】"CircuitHub的Haskell源代码格式化程序"是一款专为Haskell编程语言设计的代码美化工具,它旨在帮助开发者统一和规范项目中的代码风格,...
它能够帮助开发者自动整理和美化代码,使其更符合编程规范,提高代码可读性和团队协作效率。在Delphi 7中,通过按下快捷键Ctrl+D,可以快速启动代码格式化功能。 这个工具可能是一个第三方插件,因为文件列表中包含...
源代码格式化器可以按照这些指南对代码进行整理,包括但不限于缩进风格(使用空格还是制表符,缩进的宽度)、括号的位置(K&R风格还是Allman风格)、注释的格式等。 2. **提高效率**:手动调整大量代码的格式是一项...
产品特点提供诊断以显示无效格式(具有快速修复) 提供一尘不染的fixAll代码操作( Format on Save ) 提供一尘不染的格式化程序( Format Document ) 支持Spotless支持的所有语言。要求 用法使用此扩展之前,请...
这意味着插件提供了一个便捷的操作方式,开发者无需离开IDE就能快速整理代码结构,如缩进、换行、括号对齐等。这对于频繁编写和修改ActionScript代码的开发者来说,是一个非常实用的功能。 根据提供的文件名,我们...
SVG格式在网页设计、图标制作以及应用程序开发中广泛使用。"svg-formatter"是一个专为格式化SVG源代码而设计的工具,它能够帮助开发者整理和美化SVG代码,使其更易读、易维护。 "SVG图标化器"是svg-formatter的别名...
"VBE Code Format"可能是这样一个工具,它可能提供了上述的一些或所有功能,以帮助用户更好地管理和优化他们的VBA代码。通过使用这样的工具,开发者可以将更多精力放在解决问题和创新上,而不是花费大量时间手动调整...
LuaFormatter是一款专为Lua编程语言设计的代码格式化工具,它的主要目标是帮助开发者将杂乱无章的Lua源代码整理成统一、整洁的格式,提高代码的可读性和团队协作效率。在软件工程中,代码格式化器扮演着重要的角色,...
使用该插件时,用户可以在Elixir文件中按下预设的快捷键(例如`Alt+Shift+F`,具体快捷键可能因系统和配置不同而异)或者通过右键菜单选择“Format Code”来触发格式化操作。插件会自动分析代码,并根据Elixir的代码...
标题和描述中提到的知识点包括FASM的基本概念、Win32汇编编程的基础知识、PE文件格式、Win32程序的运行机制和内存模式以及Windows API的相关使用方法。 首先,FASM(Flat Assembler)是一个汇编语言编译器,它以其...
Z80Formatter是一款专为Z80汇编语言设计的源代码格式化工具,它的功能类似于C/C++等高级语言中的`-Form`或`format`命令,用于整理和美化代码布局,提升代码可读性。Z80汇编是一种低级编程语言,常用于早期的个人...
4. **注释整理**:整理代码中的注释,使其格式化,比如将多行注释转换为标准格式。 5. **HTML标签闭合**:自动添加或移除缺失的HTML标签,保证代码的规范性。 6. **CSS和JavaScript内联样式处理**:对嵌入在HTML中...
* ソースコード (source code):软件应用程序的源代码。 其他相关词汇: * ブラウザー (browser):网页浏览器的统称。 * クロスコンパイル (crosscompile):跨平台编译或移植软件应用程序。 * ツール (tool):软件...
### 工作中经常用到的Android开发代码2 #### 1. 退出程序对话框提示 当用户尝试退出应用程序时,通常会弹出一个对话框来确认用户的操作。这可以防止用户意外地关闭应用。以下是一个简单的示例: ```java @...