需要在当前的eclipse工作区中查找文件的文件路径

时间:2014-09-22 15:42:11

标签: java eclipse eclipse-plugin

我正在创建一个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类的文件名。

1 个答案:

答案 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;
}