获取工作区根目录

Get the workspace root

我正在开发一个 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)) 包含工作区根目录

我是不是把事情复杂化了?我怎样才能通过其他方式实现这一点?

您使用以下方法获得工作区路径的 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);

注意 Pathorg.eclipse.core.runtime.Path