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?
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.
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
}
// Define closure
def result
findTxtFileClos = {
it.eachDir(findTxtFileClos);
it.eachFileMatch(~/.*.txt/) {file ->
result += "${file.absolutePath}\n"
}
}
// Apply closure
findTxtFileClos(new File("."))
println result
remplacez eachDirRecurse
par eachFileRecurse
et cela devrait fonctionner.