Java » Listar un directorio de forma recursiva en Java
Ayer veíamos como listar el contenido de un directorio con Java. En este ejemplo listabamos 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.
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<ficheros.length;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.
![]() Descargar el código | ![]() Error en el código |
Artículos relacionados:








Diciembre 28, 2008 #
[...] Listar un directorio de forma recursiva en Java [...]
Enero 5, 2009 #
[...] por las publicación Listar un directorio y Listar un directorio de forma recursiva (siempre en Java) de Linea de Codigo, volví a abrir mi IDE para escribir algo de Java y [...]
Febrero 23, 2010 #
A ver si me pueden responder esta duda, uso un código prácticamente igual a este, lo que quiero es que cada ruta encontrada se guarde en un array de String’s, hago algo mas a o menos así:
static String [] listarr;
public static void listarDirectorio(File f){
File[] ficheros = f.listFiles();
for (int x=0;x<ficheros.length;x++){
listarr[x] = ficheros[x].getName();
…
Pero en la última línea (listarr[x] = ficheros[x].getName();) me da un NullPointerException y no sé porque.
Ayuda por favor
Marzo 17, 2010 #
String [] listarr = new String[30];
Marzo 22, 2010 #
@Aldo,
Es como comenta @nnnnnn, tienes que inicializar el array listarr.
Julio 7, 2011 #
Muy util, saludos desde Chile!.
Julio 7, 2011 #
@Marco,
Me alegro mucho que te haya sido de utilidad.
Septiembre 6, 2011 #
[...] Fuente [...]
Septiembre 19, 2011 #
[...] poder listar el contenido del ordenador solo tenemos que aplicar lo explicado en los artículos listar un directorio de forma recursiva en Java y unidades del sistema de ficheros con java.Y es que en el fondo, las unidades del sistema son [...]