如何获取 IProject 中的所有文件

How to get all files inside an IProject

我想使用 jdt 列出 java 项目中的所有文件,包括 jsps、xml 文件等

我试过下面的代码,但它只 returns java 资源(包括 class 文件,我不需要)。

    List<String> resourceNames = new ArrayList<String>();
    IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();

    for (IProject project : projects) {

        if (project.isOpen() && project.isNatureEnabled(JavaCore.NATURE_ID)) {

            for (IResource resource : project.members()) {
                resourceNames.add(resource.getName() + "-" + resource.getFullPath().toString());
            }
        }
    }

谁能给我指出正确的方向。

'members()' 执行 return 直接在当前容器中的所有操作。要查看所有文件,您还需要查看每个容器中的文件夹。

类似于:

void processContainer(IContainer container)
{
   IResource [] members = container.members();

   for (IResource member : members)
    {
      if (member instanceof IContainer) 
       {
         processContainer((IContainer)member);
       }
      else if (member instanceof IFile)
       {
         ... deal with the file
       }
    }
}

由于 IProject 扩展 IContainer 只需调用

processContainer(project);

什么都看。

IContainer(实际上是IResource)也有几个accept方法来遍历容器内容调用回调。