Leer directorio en JAVA recursivamente.

java-pngHola, hace un tiempo se me ocurrió investigar como recorrer un directorio en JAVA para una aplicación que quería hacer, después de pasarme un rato buscando en la red nacional (ya que todos no tenemos internet) y no encontrar nada que me ayudara decidí investigar un poco más allá. Después de investigar por un rato en la red de redes encontré documentación que me ayudó a crear el siguiente ejemplo:

import java.io.File;
import java.sql.SQLException;

/**
*
* @author Darkwin
*/
public class Prueba {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws SQLException, InterruptedException {

Leer l = new Leer();
l.LeerD(“D:\\”);

}

public static class Leer {

public boolean LeerD(String directorio) throws SQLException, InterruptedException {

File f = new File(directorio);
File[] ficheros = f.listFiles();
for (int x = 0; x < ficheros.length; x++) {
if (ficheros[x].isDirectory()) {
System.out.println(ficheros[x].getName());
LeerD(ficheros[x].getPath());
} else {
System.out.println(ficheros[x].getName());
}
}
return true;
}
}
}

No se olviden de comentar si  les fue de ayuda.

 

 

5 thoughts on “Leer directorio en JAVA recursivamente.

  1. sobre el sitio:
    me gustaria agradecer por este espacio, aunque en nuestro país se habla mucho de la informatización siempre se termina hablando de la falta de recursos, este sitio es un ejemplo de que solo hacen falta buenas ideas.

    sobre el recorrido del directorio:
    como dices en el título este recorrido es recursivo, pero si el directorio es muy grande la recursividad puede suponer inconvenientes en cuanto a memoria o tiempo. Teniendo en cuenta que los directorios tienen estructura de árbol se puede recorrer de otras formas, como no tengo al alcance un IDE, te dejo el pseudo código de un recorrido a lo ancho y si tengo tiempo después te pongo el código.

    archivo arc
    cola cl

    agregar el directorio raiz a la cola cl

    mientras la cola cl no este vacia

    arc = primer elemento de la cola

    /**puedes trabajar con el directorio antes o despues de agregar
    los subdirectorios a la cola en dependencia de lo que quieras hacer
    OJO se puede convertir en un ciclo infinito.**/

    si arc es directorio
    para cada archivo fc en arc
    agregar fc al final de la cola cl
    fin para

    fin mientras

  2. Aqui esta el codigo:
    package recorrido;

    import java.io.File;
    import java.util.LinkedList;

    /**
    *
    * @author Jose Luis
    */
    public class Recorrido {

    /**
    * @param args the command line arguments
    */
    public static void main(String[] args) {
    File fc = new File(“D://”); //directorio raiz
    LinkedList cola = new LinkedList(); //esta lista da la posibilidad de usarla como una cola
    //tambien puedes hacer tu propia clase cola
    cola.addLast(fc);
    while (!cola.isEmpty()) {
    fc = cola.pollFirst();//para obtener y eliminar el primer archivo
    System.out.println(fc.getPath());
    if (fc.isDirectory()) {
    File[] listFiles = fc.listFiles();
    if (listFiles != null) { //cuando encuentra la carpeta SystemVolumeInformation listfiles queda null
    for (File subdir : listFiles) { //para cada archivo de la lista
    cola.addLast(subdir);//lo agregas a la cola
    }
    }
    }
    }
    }
    }

Deja un comentario

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