当前位置: 首页 > 知识库问答 >
问题:

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

徐高懿
2023-03-14

我正在创建一个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个答案

谭成业
2023-03-14

这应该处理实际编辑单个文件的所有编辑器:

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;
}
 类似资料:
  • 问题内容: 因此,我2009年的新年决心是学习Java。我最近购买了“ Java for Dummies”,并通过使用Eclipse重新编写代码来遵循本书中的演示代码。无论如何,书中使用相对路径的每个示例似乎都不会读取应该从中读取的.txt文件。 这是示例代码: 您可以在下面的屏幕快照中看到我已包含此文件。 图片不再可用 此外,我已经验证过,在构建应用程序时,将Hankees.txt的副本与已编译

  • 问题内容: 如何找到当前正在运行的Python脚本的完整路径?就是说,我要做什么才能做到这一点: 问题答案: 不是您要找的东西。不要使用意外的副作用 是 永远 的脚本路径(如果事实上脚本已经调用) -见http://docs.python.org/library/sys.html#sys.argv 是 当前正在执行的 文件(脚本或模块)的路径。这是 偶然 一样的,如果它是从脚本访问的脚本!如果要将

  • 我想在Eclipse Oxygen 4.7.3a中从JUnit 4转换为5。我认为添加Jupiter库就足够了:库、构建路径等等。然而,在之前、之后、之前和之后都不会执行,但测试方法会执行,但如果没有正确的设置,它们当然会失败。 有趣的是,我可以使用新的Junit 5 Jupiter向导创建一个文件,该测试文件可以正常工作。我将JUnit 5注释从新文件复制并粘贴到现有文件中,但仍然不起作用。我开

  • 问题内容: 我想编写一个插件来对Eclipse中当前编辑的文件执行某些操作。但是我不确定如何正确获取文件的完整路径。 这就是我现在要做的: 现在,我有了一个IFile对象,可以检索它的路径: 但是,这仍然只给了我相对于工作空间的路径。我怎么能从中得到绝对的路径? 问题答案: 看起来像你想要的。如果您想确定自己有绝对路径,则返回,该方法也有一个方法。

  • $brew安装chromedriver-找不到bash:brew:命令 我下载了chrome驱动程序,甚至把它放在了工作目录中。仍然会出现这个错误。我几乎不知道python是什么。请帮忙。

  • 所以我的程序终于在它的第一个版本中完成了。我可以在EclipseIDE中毫无问题地运行它,但一旦我将它打包到一个Jar文件中,它就找不到项目中某个文件夹中的文件(声明为源文件夹)。我已经知道,在编译过程中,文件夹结构会发生变化,我尝试过解决这个问题,但它不起作用,我不想坚持这样的解决方法 项目结构: 在我的程序中,我正在访问“配置”中的文件 它工作得非常好,因为文件夹存在于项目中。但编译后就没有了