java - Eclipse API : How to get IFile from an IProject using only the file name?

标签 java eclipse api eclipse-plugin eclipse-api

如标题所述,我有软件包名称或信息。我有一个 IProject 句柄和一个代表 IFile 名称的字符串。

IFile 是一个 .java 类文件,IProject 是一个 Java 项目。理想情况下,我希望在不假设它们是 Java 文件/项目的情况下执行此操作 - 但这种假设对于我的目的来说是可以的。有什么建议吗?

最佳答案

如果你想从IProject递归获取文件,可以使用IProject#members。

示例)

public IFile findFileRecursively(IContainer container, String name) throws CoreException {
    for (IResource r : container.members()) {
        if (r instanceof IContainer) {
            IFile file = findFileRecursively((IContainer) r, name);
            if(file != null) {
                return file;
            }
        } else if (r instanceof IFile && r.getName().equals(name)) {
            return (IFile) r;
        }
    }

    return null;
}

您可以按如下方式调用该方法。

IFile file = findFileRecursively(project, "Foo.java");

如果您想递归地查找文件,可以使用 IProject#findMembers(String)。

关于java - Eclipse API : How to get IFile from an IProject using only the file name?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22031129/

相关文章:

java - 由于某种原因 getArrayList 被视为 int

java - 对 Servlet 的 GET 请求出现 404

java - JPA 2 Criteria 与抽象集合相结合

android - 新的Android项目未能成功创建

android - 将谷歌分析添加到 Android 应用程序

c# - ServiceNow 表 API 返回重复项/不返回所有记录

java - 使用无限循环检查变量变化

java - 必须实现继承的方法ApplicationListener.render()

php - 傻瓜版 Mailchimp (php)

api - YouTube API v3搜索-不返回所有视频