Si echamos un vistazo a un programa en Java sobre cómo listar los ficheros de un directorio y el relacionado programa que lista un directorio de forma recursiva veremos que el primero puede ser sencillo, pero que listar de forma recursiva nos vemos obligado a realizar un grupo un poco más complejo de bucles.
Es en el caso de listar un directorio de forma recursiva dónde vemos, otra vez, la potencia de Groovy. Y es que si para listar un directorio en Groovy utilizabamos un closure de la siguiente forma:
def listar = { println it }
def directorio = "/users/victor/Documents"
println "Listando el directorio $directorio"
new File (directorio).eachFile listar
El listar un directorio de forma recursiva con Groovy no nos llevará el utilizar ningún bucle, si no que simplemente deberemos de cambiar el método .eachFile por .eachFileRecurse y ya lo tenemos resuelto.
def listar = { println it }
def directorio = "/users/victor/Documents"
print "Listando el directorio $directorio de forma recursiva"
new File (directorio).eachFileRecurse listar
Lo que hemos hecho es instanciar el directorio raiz sobre el que queremos empezar la recursividad. Para ello utilizamos la clase File. Y sobre este objeto utilizar el metodo .eachFileRecurse.
Cabe indicar que el closure que utilizamos es el mismo que cuando listábamos el directorio, ya que el iterador tiene el fichero y nosotros lo mostramos por consola.