Método Java File list()
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
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, devuelve
null - Si el directorio está vacío, devuelve un arreglo vacío
Ejemplo de uso básico
Ejemplo
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
Interfaz FilenameFilter
FilenameFilteres una interfaz funcional que contiene solo un método:
Ejemplo
Ejemplo de uso de un filtro
Ejemplo
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
- Problema de permisos: si el programa no tiene permiso para leer el directorio,
list()el método devolveránull - 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 - Consideraciones de rendimiento: para directorios con una gran cantidad de archivos,
list()el método puede consumir bastante memoria - 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.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