Listar directorios con Groovy

Recorrer y listar los directorios ubicados en la jerarquía de la ruta actual es relativamente sencillo con Groovy, esto se debe a que es 100% interoperable con Java pero al mismo tiempo añade mayor funcionalidad y sencilles. Aquí está la forma de como hacer esto en solo 11 líneas de código.

def numDir = 0

new File(".").eachDirRecurse {
    println(it)
    numDir++
}

if(numDir > 1 || numDir == 0)
    println("\nSe han encontrado $numDir directorios!")
else if(numDir == 1)
    println("\nSe ha encontrado $numDir directorio!")

hay que recordar que Groovy es un lenguaje mixto, esto quiere decir que, puede funcionar como lenguaje dinámico o lenguaje estático. Posee una sintaxis limpia como la de Python y a su vez permite usar la sintaxis más parecida a la de Java. Todo esto convierte a este bello lenguaje en una herramienta todo terreno que se adapta a gustos y necesidades de los programadores.


Declarando variable:

En la primera línea se crea la variable numDir de forma dinámica y se inicializa con un valor de 0, esto se hace usando la palabra reservada def. Dicha variable será el contador que nos permite conocer cuantos directorios hay en la actual jerarquía.

File(): Recorriendo directorios:
new File(".").eachDirRecurse {
    println(it)
    numDir++
}

Como se dijo anteriormente, Groovy es un lenguaje bastante sencillo. Podemos recorrer los directorios de 2 formas, la primera es crear un objeto File() y luego llamar la Closure .eachDirRecurse {} y la segunda es como se muestra en el fragmento de código; llamamos a la clase File() directamente un «.» como único argumento, que representa la raíz de la ruta del directorio actual. la Closure .eachDirRecurse {} solo va a iterar sobre los directorios existentes de forma recursiva ignorando a los archivos, esto quiere decir que va a iterar incluso sobre los subdirectorios que encuentre.

Con la función println() mostramos en pantalla el el nombre del directorio con su ruta completa iniciando con un «.», la variable it es una variable temporal que solo puede ser usada al interior de la Closure y almacena el dato que se extrae en cada iteración. La variable numDir cuenta el número de iteraciones, esto representa el número de directorios encontrados.

Mostrando el resultado en pantalla:
if(numDir > 1 || numDir == 0)
    println("\nSe han encontrado $numDir directorios!")
else if(numDir == 1)println()
    println("\nSe ha encontrado $numDir directorio!")

Este fragmento de código solo hace 3 comprobaciones, que numDir sea mayor a 1 o igual a cero en el primer caso, si esto produce false entonces comprueba si es igual a 1. De acuerdo al resultado imprimirá un mensaje en pantalla indicando el número de directorios encontrados.

Ejecutando el programa:

Al ejecutar este pequeño programa, veremos nos debe mostrar un resultado como este:

[fixedtorres@linuxero]$ groovy ListarDirectorios.groovy
./Code Screen
./Code Screen/qwdqwd
./Code Screen/qwdqwdqd
./Code Screen/wdwd

Se han encontrado 4 directorios!
[fixedtorres@linuxero]$




Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *