获取工作区根目录
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);
注意 Path
是 org.eclipse.core.runtime.Path
我正在开发一个 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);
注意 Path
是 org.eclipse.core.runtime.Path