在IProject中搜索文件 - Eclipse

时间:2010-08-04 13:53:31

标签: java eclipse eclipse-plugin

我需要找到eclipse项目中存在的特定文件,该文件位于项目的类路径中。

我有IProject个实例,但不知道如何获取IFile实例

2 个答案:

答案 0 :(得分:6)

IProject接口扩展了IContainer,其中包含多个findMember方法。在使用IFile检查其类型后,您会收到一个可以转换为getType的IResource。浏览这些界面,它们都有适当的文档记录。

答案 1 :(得分:3)

我遇到了同样的问题,这就是我做的事情:

IResource getResource(IProject project, String folderPath, String fileName) {

    IJavaProject javaProject = JavaCore.create(project);
    for (IPackageFragmentRoot root : javaProject.getAllPackageFragmentRoots()) {
        IPackageFragment folderFragment = root.getPackageFragement(folderPath);
        IResource folder = folderFragment.getResource();
        if (folder == null || ! folder.exists() || !(folder instanceof IContainer)) {
            continue;
        }

        IResource resource = ((IContainer) folder).findMember(fileName);
        if (resource.exists()) {
            return resource;
        }
    }

    // file not found in any source path
    return null;
}

它看起来很丑陋,也许有更直接的方法。但它确实有效。

如果需要使用类路径,则必须使用IJavaProject,并且片段的工作方式可以防止直接搜索文件路径,因为它将采用“。”文件名中的(句点)是java包分隔符。所以我想你必须首先得到正确的文件夹,然后是文件。