Método Java File list()

Java File Java File


File.list()es, en Java,java.io.Fileun método de instancia proporcionado por la clase, que se utiliza para obtener la lista de nombres de todos los archivos y subdirectorios del directorio especificado. Este método es muy útil para escenarios donde se necesita recorrer o procesar el contenido de un directorio.

Sintaxis del método

public String[] list()

Valor de retorno del método

list()El método devuelve un arreglo de cadenas (String[]), que contiene lo siguiente:

  • Si el objeto de llamada representa un directorio válido, devuelve los nombres de todos los archivos y subdirectorios del directorio
  • Si el objeto de llamada no representa un directorio o se produce un error de E/S, devuelvenull
  • Si el directorio está vacío, devuelve un arreglo vacío

Ejemplo de uso básico

Ejemplo

import java.io.File;

public class ListFilesExample {
    public static void main(String[] args) {
        // Crear un objeto File que representa un directorio
        File directory = new File("C:/MyFolder");
       
        // Obtener la lista de archivos y subdirectorios del directorio
        String[] files = directory.list();
       
        // Verificar si la lista se obtuvo correctamente
        if (files != null) {
            System.out.println("Contenido del directorio:");
            for (String file : files) {
                System.out.println(file);
            }
        } else {
            System.out.println("La ruta especificada no es un directorio o se produjo un error");
        }
    }
}

Versión sobrecargada del método

FileLa clase también proporciona otra versión delist()método, que puede aceptar un filtro:

Ejemplo

public String[] list(FilenameFilter filter)

Interfaz FilenameFilter

FilenameFilteres una interfaz funcional que contiene solo un método:

Ejemplo

boolean accept(File dir, String name)

Ejemplo de uso de un filtro

Ejemplo

import java.io.File;
import java.io.FilenameFilter;

public class FilteredListExample {
    public static void main(String[] args) {
        File directory = new File("C:/MyFolder");
       
        // Solo enumerar archivos .txt
        String[] textFiles = directory.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(".txt");
            }
        });
       
        // Java 8+ puede usar la abreviatura de expresión Lambda
        String[] textFiles = directory.list((dir, name) -> name.endsWith(".txt"));
       
        if (textFiles != null) {
            System.out.println("Lista de archivos de texto:");
            for (String file : textFiles) {
                System.out.println(file);
            }
        }
    }
}

Notas

  1. Problema de permisos: si el programa no tiene permiso para leer el directorio,list()el método devolveránull
  2. Enlaces simbólicos:list()el método seguirá los enlaces simbólicos y puede devolver el nombre real del archivo/directorio al que apunta el enlace
  3. Consideraciones de rendimiento: para directorios con una gran cantidad de archivos,list()el método puede consumir bastante memoria
  4. Rutas relativas: los nombres de archivo devueltos solo contienen la parte del nombre, no la ruta completa

Métodos alternativos

En Java 7 y versiones posteriores, se recomienda usarFileslas clases yDirectoryStreampara manejar el contenido del directorio, ya que proporcionan una forma más moderna y flexible:

Ejemplo

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class NioListExample {
    public static void main(String[] args) throws IOException {
        Path dir = Paths.get("C:/MyFolder");
       
        try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
            for (Path file : stream) {
                System.out.println(file.getFileName());
            }
        }
    }
}

Resumen

File.list()El método es una forma simple y directa de obtener el contenido de un directorio, adecuada para operaciones simples del sistema de archivos. Para necesidades más complejas, se puede considerar usarFilenameFiltero recurrir a las funciones más potentes proporcionadas por la API NIO.2.

Java File Java File

Otras extensiones