Como mostrar los ficheros de una carpeta recursivamente

Hola a todos, hoy os voy a explicar como podemos mostrar los ficheros de una carpeta recursivamente.

Como ya sabéis, podemos tener muchos elementos en una carpeta y dentro de esta otras carpetas con mas elementos y así indefinidamente.

Si hiciéramos esto de forma iterativa, tendríamos que poner x for pero el problema es que no seria muy optimo y que no sabríamos cuantos for poner.

Por lo que lo haremos de forma recursiva.

Para listar los ficheros de un directorio, lo hacemos así:


File[] ficheros = directorio.listFiles();

La idea es que cuando es un directorio, volvemos a llamar a la función.

Como idea adicional, podemos añadir un parámetro adicional para indicar el carácter de separación.

Os dejo la función para mostrar los ficheros contenidos de un directorio:


public static void ficherosRecursivos(File directorio, String separador) {
    File[] ficheros = directorio.listFiles();

    if(ficheros != null){
        for (int x = 0; x < ficheros.length; x++) {
            System.out.println(separador + ficheros[x].getName());
            if (ficheros[x].isDirectory()) {
                String nuevo_separador = separador + " ";
                ficherosRecursivos(ficheros[x], nuevo_separador);
            }
        }
    }
}


Os dejo el ejemplo completo:


import java.io.File;

public class Mostrar_ficheros_recursivo {

  
    public static void main(String[] args) {
        
        File directorio = new File("C:\\Users\\Fernando\\Desktop");
        
        ficherosRecursivos(directorio, "\t");
        
    }

    public static void ficherosRecursivos(File directorio, String separador) {
        File[] ficheros = directorio.listFiles();

        if(ficheros != null){
            for (int x = 0; x < ficheros.length; x++) {
                System.out.println(separador + ficheros[x].getName());
                if (ficheros[x].isDirectory()) {
                    String nuevo_separador = separador + " ";
                    ficherosRecursivos(ficheros[x], nuevo_separador);
                }
            }
        }
    }

}

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

3 comentarios

  1. Juan

    Hola!
    Me podrías echar una ayudita?

    Necesito crear un fichero .txt con el resultado de un directorio de forma recursiva (directorios y ficheros) .

    Es decir, justo este ejercicio pero guardándolo en un fichero en vez que hacer un print.

    No logro dar con la forma..

    Cualquier ayuda lo agradecería!

    Un saludo!

  2. Álvaro

    Me gustaría saber que cómo se puede visualizar ficheros de texto en cada carpeta. Es decir, tenemos cinco carpetas y cada uno tiene sus ficheros. ¿Cómo se podría visualizar? .

    Un saludo,

Deja una respuesta

Tu dirección de correo electrónico no será publicada.