我正在开发一个eclipse插件,我正在尝试获取工作区根目录,以便稍后从工作区访问文件并从中读取内容。
我跳过错误处理以获得更短的代码
IProject project = file.getProject(); // file is the file open in editor
IFolder specificFolder = project.getFolder("test");
IFile fileFromSpecFolder = specificFolder.getFile("test.txt");
Path path = Paths.get(fileFromSpecFolder.getLocationURI());
BufferedReader reader = createReaderFor(path);
// later on read something from the file...
问题在于实现的getProject
方法returns itself for projects or null for the project root
。
public IProject getProject() {
return workspace.getRoot().getProject(path.segment(0));
}
path.segment(0))
包含工作区根
我在这里过于复杂吗?我怎么能用另一种方式实现这个目标呢?
答案 0 :(得分:2)
使用以下命令获取工作区中路径的IFile
:
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IPath path = new Path("project/folder/file");
IFile file = root.getFileForLocation(path);
要阅读工作区中文件的内容,您应该使用IFile.getContents
:
InputStream is = file.getContents();
使用IFile.getCharset
获取文本文件的字符集:
String charset = file.getCharset();
因此该文件的Reader
将是:
Reader reader = new InputStreamReader(is, charset);
请注意,Path
为org.eclipse.core.runtime.Path