我正在创建一个eclipse插件,需要检索当前工作区窗口中打开的所有文件的路径/文件名。
我编写的代码成功检索了当前打开的java文件的文件名,但无法检索所有其他文件类型的路径/文件,如xml,jsp,css等。
到目前为止我使用的代码是: -
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IEditorReference[] ref = page.getEditorReferences();
List<IEditorReference> javaEditors = new ArrayList<IEditorReference>();
//Checks if all the reference id's match the active editor's id
for (IEditorReference reference : ref) {
if ("org.eclipse.jdt.ui.CompilationUnitEditor".equals(reference.getId())){
javaEditors.add(reference);
}
}
if(javaEditors != null){
for(IEditorReference aRef : javaEditors){
System.out.println("File info: " + aRef.getName());
}
}
我需要帮助的是 - 在当前打开的工作区/编辑器中检索所有打开文件(任何文件类型)的文件路径+文件名。上面的代码只能获取当前编辑器中打开的Java类的文件名。
答案 0 :(得分:2)
这应该处理实际编辑单个文件的所有编辑器:
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IEditorReference[] refs = page.getEditorReferences();
for (IEditorReference reference : refs) {
IEditorInput input = reference.gtEditorInput();
IPath path = getPathFromEditorInput(input);
if (path != null)
{
System.out.println(path.toOSString());
}
}
private static IPath getPathFromEditorInput(IEditorInput input)
{
if (input instanceof ILocationProvider)
return ((ILocationProvider)input).getPath(input);
if (input instanceof IURIEditorInput)
{
URI uri = ((IURIEditorInput)input).getURI();
if (uri != null)
{
IPath path = URIUtil.toPath(uri);
if (path != null)
return path;
}
}
if (input instanceof IFileEditorInput)
{
IFile file = ((IFileEditorInput)input).getFile();
if (file != null)
return file.getLocation();
}
return null;
}