Visų failų, atitinkančių konkretų failo tipą Groovy, rekursinis sąrašas

Bandau rekursiškai išvardyti visus failus, atitinkančius tam tikrą failo tipą Groovy. Šis pavyzdys beveik tai daro. Tačiau juose nėra failų, esančių šakniniame aplanke. Ar galima tai pakeisti failų sąrašu šakniniame aplanke? Arba, ar yra dar vienas būdas tai padaryti?

29
07 сент. shikarishambu yra nustatytas 07 sep . 2010-09-07 22:48 '10 10:48 PM 2010-09-07 22:48
@ 4 atsakymai

Tai turėtų išspręsti jūsų problemą:

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

eachFileRecurse priima eachFileRecurse skaičiavimo failą, kuris rodo, kad jus domina tik failai. Likusi problema lengvai išsprendžiama filtruojant failo pavadinimą. Verta paminėti, kad eachFileRecurse paprastai rekursyviai nuskaito failus ir aplankus, ir eachDirRecurse suranda aplankus.

68
08 сент. Atsakymas pateikiamas xlson 08 Sep. 2010-09-08 10:37 '10, 10:37 am 2010-09-08 10:37

2.4.4 versija:

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

Taip pat galite pridėti filtrą

 new File(parentPath).traverse(type: groovy.io.FileType.FILES, nameFilter: ~/patternRegex/) { it -> println it } 
6
11 авг. Atsakymas pateikiamas Toumi 11 rug. 2016-08-11 17:42 '16 at 17:42 pm 2016-08-11 17:42

pakeiskite eachDirRecurse su eachFileRecurse , ir jis turėtų veikti.

3
07 сент. atsakymas pateikiamas Riduidel 07 sep . 2010-09-07 23:09 '10, 23:09, 2010-09-07 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 сент. atsakymą pateikė Aaron Saunders 08 sep. 2010-09-08 05:43 '10, 5:43 val. 2010-09-08 05:43

Kiti klausimai apie žymes, arba Ask a question