Я пытаюсь рекурсивно перечислить все файлы, которые соответствуют определенному типу файла в Groovy. Этот пример почти делает это. Однако он не перечисляет файлы в корневой папке. Есть ли способ изменить это на список файлов в корневой папке? Или, есть ли другой способ сделать это?
Рекурсивный список всех файлов, соответствующих определенному типу файлов в Groovy
Ответ 1
Это должно решить вашу проблему:
import static groovy.io.FileType.FILES
new File('.').eachFileRecurse(FILES) {
if(it.name.endsWith('.groovy')) {
println it
}
}
eachFileRecurse
принимает файл перечисления FileType, который указывает, что вас интересуют только файлы. Остальная часть проблемы легко решается путем фильтрации имени файла. Стоит упомянуть, что eachFileRecurse
обычно рекурсивно просматривает файлы и папки, а eachDirRecurse
находит папки.
Ответ 2
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
}
Ответ 3
замените eachDirRecurse
на eachFileRecurse
, и оно должно работать.
Ответ 4
// Define closure
def result
findTxtFileClos = {
it.eachDir(findTxtFileClos);
it.eachFileMatch(~/.*.txt/) {file ->
result += "${file.absolutePath}\n"
}
}
// Apply closure
findTxtFileClos(new File("."))
println result