Sto tentando di elencare in modo ricorsivo tutti i file che corrispondono a un tipo di file specifico in Groovy. This example quasi lo fa. Tuttavia, non elenca i file nella cartella principale. C'è un modo per modificarlo per elencare i file nella cartella principale? O c'è un modo diverso di farlo?Elenco ricorsivo di tutti i file corrispondenti a un determinato tipo di file in Groovy
29
A
risposta
69
Questo dovrebbe risolvere il problema:
import static groovy.io.FileType.FILES
new File('.').eachFileRecurse(FILES) {
if(it.name.endsWith('.groovy')) {
println it
}
}
eachFileRecurse
prende un FileType enum che specifica che si è interessati solo nei file. Il resto del problema si risolve facilmente filtrando il nome del file. Vale la pena ricordare che eachFileRecurse
ricorre normalmente su entrambi i file e le cartelle mentre eachDirRecurse
trova solo le cartelle.
3
sostituire eachDirRecurse
di eachFileRecurse
e dovrebbe funzionare.
3
// Define closure
def result
findTxtFileClos = {
it.eachDir(findTxtFileClos);
it.eachFileMatch(~/.*.txt/) {file ->
result += "${file.absolutePath}\n"
}
}
// Apply closure
findTxtFileClos(new File("."))
println result
7
Groovy versione 2.4.7:
new File(pathToFolder).traverse(type: groovy.io.FileType.FILES) { it ->
println it
}
si può anche aggiungere filtri come
new File(parentPath).traverse(type: groovy.io.FileType.FILES, nameFilter: ~/patternRegex/) { it ->
println it
}
Lo snippet troveranno lo stesso file più volte. Per farlo funzionare dovrai usare eachDirRecurse e per ogni dir usare dir.eachFileMatch per trovare i file nella directory. Controlla la mia soluzione per un altro modo per risolvere il problema. – xlson
nuovo approccio ... –