2010-09-07 24 views

Respuesta

69

Esto debería resolver su problema:

import static groovy.io.FileType.FILES 

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

eachFileRecurse toma un tipo de archivo de enumeración que especifica que sólo está interesado en los archivos. El resto del problema se resuelve fácilmente filtrando el nombre del archivo. Puede valer la pena mencionar que eachFileRecurse normalmente recurre sobre ambos archivos y carpetas, mientras que eachDirRecurse solo encuentra carpetas.

3

reemplace eachDirRecurse por eachFileRecurse y debería funcionar.

3
// Define closure 
def result 

findTxtFileClos = { 

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

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

println result 
+0

que el fragmento se encuentra el mismo archivo varias veces. Para que funcione, deberá usar eachDirRecurse en su lugar y para cada dir use dir.eachFileMatch para buscar los archivos en el directorio. Verifique mi solución para otra forma de resolver el problema. – xlson

+0

nuevo enfoque ... –

7

versión 2.4.7 maravilloso:

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

también se puede agregar el filtro como

new File(parentPath).traverse(type: groovy.io.FileType.FILES, nameFilter: ~/patternRegex/) { it -> 
    println it 
} 
Cuestiones relacionadas