Поиск файла в IProject - Eclipse - PullRequest
4 голосов
/ 04 августа 2010

Мне нужно найти определенный файл, присутствующий в проекте eclipse, который находится в classpath проекта.

У меня есть IProject экземпляр, но я не знаю, как получить IFile экземпляр

Ответы [ 2 ]

6 голосов
/ 04 августа 2010

Интерфейс IProject расширяет IContainer, который имеет несколько findMember методов.Вы получаете IResource, который можно преобразовать в IFile после проверки его типа с помощью getType.Пройдите через эти интерфейсы, они правильно задокументированы.

3 голосов
/ 11 октября 2011

Я столкнулся с той же проблемой, и это вкратце то, что я сделал:

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;
}

Это выглядит довольно некрасиво и, возможно, есть более прямой подход.Но это работает.

Если вам нужно использовать classpath, вы должны использовать IJavaProject, а способ работы фрагментов препятствует прямому поиску пути к файлу, потому что он примет "."(точка) в имени файла является разделителем пакета Java.Так что я думаю, вам нужно сначала найти нужную папку, а затем файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...