Я пытаюсь рекурсивно перечислить все файлы, соответствующие определенному типу файлов в Groovy. Этот пример почти подходит. Однако он не отображает файлы в корневой папке. Есть ли способ изменить это, чтобы отобразить файлы в корневой папке? Или есть другой способ сделать это?
Рекурсивный список всех файлов, соответствующих определенному типу файлов в Groovy
Ответы (4)
Это должно решить вашу проблему:
import static groovy.io.FileType.FILES
new File('.').eachFileRecurse(FILES) {
if(it.name.endsWith('.groovy')) {
println it
}
}
eachFileRecurse
принимает перечисление FileType, которое указывает, что вас интересуют только файлы. В остальном проблема легко решается фильтрацией по имени файла. Возможно, стоит упомянуть, что eachFileRecurse
обычно выполняет рекурсию как по файлам, так и по папкам, а eachDirRecurse
находит только папки.
person
xlson
schedule
08.09.2010
Groovy версия 2.4.7:
new File(pathToFolder).traverse(type: groovy.io.FileType.FILES) { it ->
println it
}
вы также можете добавить фильтр, например
new File(parentPath).traverse(type: groovy.io.FileType.FILES, nameFilter: ~/patternRegex/) { it ->
println it
}
person
Toumi
schedule
11.08.2016
замените eachDirRecurse
на eachFileRecurse
, и он должен работать.
person
Riduidel
schedule
07.09.2010
person
schedule
Ваш фрагмент найдет один и тот же файл несколько раз. Чтобы заставить его работать, вам придется вместо этого использовать eachDirRecurse, а для каждого каталога использовать dir.eachFileMatch, чтобы найти файлы в каталоге. Посмотрите мое решение, чтобы узнать о другом способе решения проблемы.
- person xlson; 08.09.2010