web-dev-qa-db-fra.com

Liste récursive de tous les fichiers correspondant à un certain type de fichier dans Groovy

J'essaie de répertorier récursivement tous les fichiers qui correspondent à un type de fichier particulier dans Groovy. Cet exemple le fait presque. Cependant, il ne répertorie pas les fichiers dans le dossier racine. Existe-t-il un moyen de modifier cela pour répertorier les fichiers dans le dossier racine? Ou existe-t-il une autre façon de procéder?

36
shikarishambu

Cela devrait résoudre votre problème:

import static groovy.io.FileType.FILES

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

eachFileRecurse prend un FileType enum qui spécifie que vous n'êtes intéressé que par les fichiers. Le reste du problème est facilement résolu en filtrant le nom du fichier. Il convient de mentionner que eachFileRecurse revient normalement sur les fichiers et les dossiers tandis que eachDirRecurse ne trouve que les dossiers.

82
xlson

version groovy 2.4.7:

new File(pathToFolder).traverse(type: groovy.io.FileType.FILES) { it ->
    println it
}

vous pouvez également ajouter un filtre comme

new File(parentPath).traverse(type: groovy.io.FileType.FILES, nameFilter: ~/patternRegex/) { it ->
    println it
}
15
Toumi
// Define closure
def result

findTxtFileClos = {

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

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

println result
4
Aaron Saunders

remplacez eachDirRecurse par eachFileRecurseet cela devrait fonctionner.

4
Riduidel