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

标签 java eclipse plugins

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

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

您能否告诉我如何从 IPath 中设置子文件夹列表?

非常感谢。

最佳答案

IFolder 是一个 IContainer,因此您可以通过调用 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 + "  ");
        }
    }
}

关于java - Eclipse 插件开发 - 如何获取子文件夹列表并继续导航文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20186995/

相关文章:

java - 填充动态二维java数组

java - 从调用 Activity 中提取 Intent 中的可分割数据需要很长时间

java - 我不知道 Eclipse 中的数组发生了什么

java - 使用cucumber v1.2.4时运行cucumber测试的方法没有签名

javascript - 分离基于 JavaScript 的插件和配置以提高性能的好方法是什么

java - JUnit5-木星 : Composed ( ="meta") annotation does not resolve to annotation definition

java - 打印排序的树状图(根据值排序)

java - 从 RCP 应用程序启动 SWT 窗口/进程

jquery - 选择2 : How to persist search term?

c# - 将 DLL 加载到一个单独的 AppDomain 中,只有已知的通用接口(interface)