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.

Etiquetas

One comment

  1. Muy buen articulo

Deja un comentario

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