feed twitter facebook LinkedIn facebook

Java » Listar un directorio de forma recursiva en Java

Diciembre 27, 2008 por Víctor Cuervo . 8216 visitas 9 Comentarios Imprimir Imprimir

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.

  1. public static void listarDirectorio(File 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().

  1. for (int x=0;x<ficheros.length;x++){
  2. System.out.println(separador + ficheros[x].getName());
  3. }

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.

  1. if (ficheros[x].isDirectory()){
  2. String nuevo_separador;
  3. nuevo_separador = separador + " ";
  4. listarDirectorio(ficheros[x],nuevo_separador);
  5. }

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 Codigo
Descargar el código
Error en el Codigo
Error en el código
tags: , , , , , ,

Artículos relacionados:

9 comentarios »

Redifusión RSS de los comentarios de la entrada. TrackBack URI

  1. Linea de Codigo » Borrar un directorio con Java
    Diciembre 28, 2008 #

    [...] Listar un directorio de forma recursiva en Java [...]

  2. ls (list directory) recursivo 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 [...]

  3. Aldo
    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 :(

  4. nnnnnn
    Marzo 17, 2010 #

    String [] listarr = new String[30];

  5. lineadecodigo
    Marzo 22, 2010 #

    @Aldo,

    Es como comenta @nnnnnn, tienes que inicializar el array listarr.

  6. Marco
    Julio 7, 2011 #

    Muy util, saludos desde Chile!.

  7. Víctor Cuervo
    Julio 7, 2011 #

    @Marco,

    Me alegro mucho que te haya sido de utilidad. :-D

  8. Cómo recorrer un directorio de forma recursiva con Java | cutnpaste.org
    Septiembre 6, 2011 #

    [...] Fuente [...]

  9. Linea de Codigo » Listar contenido del ordenador
    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 [...]

Deje un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*