【问题标题】:Eclipse plugin development - How to get the list of sub folders and keep navigating the folder?Eclipse 插件开发 - 如何获取子文件夹列表并继续导航文件夹?
【发布时间】:2013-12-09 19:41:22
【问题描述】:

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

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

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

非常感谢。

【问题讨论】:

    标签: java eclipse plugins


    【解决方案1】:

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

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

    IJavaProject#getOutputLocation() 方法返回您的 java 项目的输出文件夹(通常是存储所有已编译内容和其他生成资源的 bin 目录)的(相对于工作空间的)绝对路径。

    IPath outputPath = project.getOutputLocation();
    

    如果您有一个相对于工作空间的路径,您可以通过询问IContainer 来获得实际的IFileIFolder - 例如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 + "  ");
            }
        }
    }
    

    【讨论】:

    • 感谢您的回答,但我在 IFolder 或 IContainer 类上看不到 getMembers() 方法。您能详细解释一下吗?谢谢。
    • 哇!非常感谢,我现在有了一个想法,你的代码完美无缺。这是我想知道和得到的。再次感谢!! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多