Eclipse插件开发 - 如何获取子文件夹列表并继续导航文件夹?

时间:2013-11-25 07:35:10

标签: java eclipse plugins

我正在Eclipse插件开发中开发一个文件搜索模块。 现在,我知道使用IJavaProject.getOutputLocation()的路径名称, 我想获取IPath目录下的所有文件夹和文件。

我可以看到从文件夹名称创建或获取IFolder的API 我找不到可以返回特定目录下的文件夹列表的东西。

您能告诉我如何从IPath中获取子文件夹列表吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

IFolderIContainer,因此您可以通过调用members()获取所有子元素的列表。它将返回IResource[]。通过instanceof测试每个元素的实际类型 - 它应该是IFolderIFile

IPath只是一个字符串段列表,以“/”分隔。通常它用于指向工作空间中的文件,但这不是强制性的。

方法IJavaProject#getOutputLocation()返回一个(工作空间相对的)绝对路径到java项目的输出文件夹(通常是bin目录,其中存储了所有已编译的东西和其他生成的资源)。

IPath outputPath = project.getOutputLocation();

如果您有相对于工作区的路径,则可以通过询问IFile来获取实际的IFolderIContainer - 例如IWorkspaceRoot(这是工作区的根容器):

IFolder outputFolder = ResourcesPlugin.getWorkspace().getRoot().getFolder(outputPath);

现在您可以遍历文件夹结构:

void printStructure(IContainer container, String intent) {
    for(IResource member : folder.members()) {
        System.out.println(intent + member.getName());
        if (member instanceof IContainer) {
            printStructure((IContainer)member, intent + "  ");
        }
    }
}