#java #java-8 #eclipse-plugin
#java #java-8 #eclipse-плагин
Вопрос:
Скажем, в моей рабочей области есть определенные файлы в корневой папке, например foo.xml , foo1.xml , foo2.xml , foo3.xml .
final List<String> configFiles = new ArrayList<>();
configFiles.add("foo.xml");
configFiles.add("foo1.xml");
configFiles.add("Foo2.xml");
final List<IFile> iFiles = configFiles.stream()
.map(project::getFile)
.filter(IFile::exists)
.collect(Collectors.toList());
Когда я создаю GetFile в проекте, iFile ожидает имя файла с учетом регистра, скажем, есть foo2.xml в моем рабочем пространстве, и я пытаюсь получить доступ Foo2.xml , Я не получаю файл.
Как я могу получить файлы независимо от регистра?
Ответ №1:
Я не думаю, что есть простой способ.
Вы могли бы получить вызов members()
в проекте:
IResource [] members = project.members();
а затем сопоставьте имена членов, используя equalsIgnoreCase
:
private IFile findFile(IResource [] members, String name)
{
for (IResource member : members) {
if (name.equalsIgnoreCase(member.getName())) {
if (member instanceof IFile) {
return (IFile)member;
}
return null;
}
}
return null;
}
таким образом, поток будет:
final List<IFile> iFiles = configFiles.stream()
.map(file -> findFile(members, file))
.filter(Objects::nonNull)
.collect(Collectors.toList());