我正在创建一个 Eclipse 插件。 我有一个带有java代码的字符串,我想将此代码保存到项目中。我使用 IFile 来创建我的文件。 还有其他更好的方法来保存java代码吗?
伊多
我正在思考这个问题。 使用 IFile,然后让 JDT 发现它就可以正常工作,它绝对具有简单的优点。 这就是 org.eclipse.core.resources API 的设计目的。 如果您想了解更多信息,请查看 org.eclipse.jdt.core 包中的 JavaCore。 您可能需要在创建 IFile 后调用 JavaCore.create( file ),其中 file 是您新创建的 IFile 实例。
我遵循了《Contributing to Eclipse》一书中的示例。
从这里下载示例代码http://www.informit.com/store/product.aspx?isbn=0321205758
它属于一个名为
TestProject
的类。
基本上它从
org.eclipse.jdt.core.IJavaProject
创建了 IProject
。 并从 org.eclipse.jdt.core.ICompilationUnit
创建
org.eclipse.jdt.core.IPackageFragment
IPackageFragment pack = sourceFolder.createPackageFragment(packageName, false, null);
StringBuffer buf = new StringBuffer();
buf.append("package " + pack.getElementName() + ";\n");
buf.append("\n");
buf.append(source);
ICompilationUnit cu = pack.createCompilationUnit(cuName, buf.toString(), false, null);
顺便说一句,这是一本很棒的书,它展示了如何对您认为不可测试的插件部分进行单元测试。
您可以编写一个性质和构建器,将文本保存为扩展名为“.java”的文件,只要打开自动构建,JDT就会拾取它。
请注意,Eclipse 4.33(2024 年第 3 季度)确实附带:
用于创建/读/写的增强型 IFile API
org.eclipse.core.resources 插件定义了以下新方法:
IFile.create(byte[], boolean, boolean, IProgressMonitor)
IFile.create(byte[], int, IProgressMonitor)
IFile.write(byte[], boolean, boolean, boolean, IProgressMonitor)
IFile.setContents(byte[], boolean, boolean, IProgressMonitor)
IFile.setContents(byte[], int, IProgressMonitor)
IFile.readAllBytes()
IFile.readNBytes(int)
IFile.readAllChars()
IFile.readString()
这些方法是为了方便起见,并针对性能进行了优化,处理不需要流式传输的小文件。