Ayer veíamos como listar el contenido de un directorio con Java. En este ejemplo listábamos el contenido, saliendo como resultado los ficheros y directorios que contenía este.
En este caso lo que vamos a hacer es listar el contenido de los directorios de forma recursiva. Es decir, cada vez que nos encontremos un directorio dentro del directorio que estamos listando, entraremos en él y listaremos su contenido. Así de forma recursiva sobre todos los directorios.
En este caso vamos a crear un método listarDirectorio, el cual reciba un elemento File que sea un directorio y el separador.
public static void listarDirectorio(File directorio, String separador){
...
}
Lo primero que haremos será recuperar la lista de ficheros del directorio a listar mediante el método .listFiles(). Este método nos devuelve un array de Files.
Mediante un bucle for iremos recorriendo el array y volcando el nombre del fichero mediante el método .getName().
for (int x=0;x
Ahora viene la diferencia con respecto a listar el contenido de un directorio con Java. Y es que por cada elemento, además de volcar su nombre, comprobaremos si es un directorio mediante el método .isDirectory().
En el caso de que el elemento sea un directorio, volveremos a llamar al método listarDirectorio(), Pasándolo en elemento File que estamos tratando.
if (ficheros[x].isDirectory()){
String nuevo_separador;
nuevo_separador = separador + " ";
listarDirectorio(ficheros[x],nuevo_separador);
}
En el código hemos insertado una variable separador, la cual añadirá un espacio en blanco cada vez que cambiemos de directorio.