Рекурсивный список всех файлов, соответствующих определенному типу файлов в Groovy

Я пытаюсь рекурсивно перечислить все файлы, которые соответствуют определенному типу файла в Groovy. Этот пример почти делает это. Однако он не перечисляет файлы в корневой папке. Есть ли способ изменить это на список файлов в корневой папке? Или, есть ли другой способ сделать это?

29
07 сент. '10 в 22:48
источник поделиться
4 ответов

Это должно решить вашу проблему:

import static groovy.io.FileType.FILES

new File('.').eachFileRecurse(FILES) {
    if(it.name.endsWith('.groovy')) {
        println it
    }
}

eachFileRecurse принимает файл перечисления FileType, который указывает, что вас интересуют только файлы. Остальная часть проблемы легко решается путем фильтрации имени файла. Стоит упомянуть, что eachFileRecurse обычно рекурсивно просматривает файлы и папки, а eachDirRecurse находит папки.

68
08 сент. '10 в 10:37
источник

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
}
6
11 авг. '16 в 17:42
источник

замените eachDirRecurse на eachFileRecurse, и он должен работать.

3
07 сент. '10 в 23:09
источник
// Define closure
def result

findTxtFileClos = {

        it.eachDir(findTxtFileClos);
        it.eachFileMatch(~/.*.txt/) {file ->
                result += "${file.absolutePath}\n"
        }
    }

// Apply closure
findTxtFileClos(new File("."))

println result
3
08 сент. '10 в 5:43
источник

Посмотрите другие вопросы по меткам или Задайте вопрос