Obtener los nombres de todos los archivos en una carpeta [duplicado]
Necesito crear una lista con todos los nombres de los archivos en una carpeta.
Por ejemplo, si tengo:
000.jpg
012.jpg
013.jpg
Quiero almacenarlos en un valor ArrayList
con [000,012,013]
as.
¿Cuál es la mejor manera de hacerlo en Java?
PD: estoy en Mac OS X
Podrías hacerlo así:
File folder = new File("your/path");
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
System.out.println("File " + listOfFiles[i].getName());
} else if (listOfFiles[i].isDirectory()) {
System.out.println("Directory " + listOfFiles[i].getName());
}
}
¿Quiere obtener sólo archivos JPEG o todos los archivos?
Crea un File
objeto, pasando la ruta del directorio al constructor. Utilice listFiles()
para recuperar una matriz de File
objetos para cada archivo en el directorio y luego llame al getName()
método para obtener el nombre del archivo.
List<String> results = new ArrayList<String>();
File[] files = new File("/path/to/the/directory").listFiles();
//If this pathname does not denote a directory, then listFiles() returns null.
for (File file : files) {
if (file.isFile()) {
results.add(file.getName());
}
}
Aquí se explica cómo buscar en la documentación .
Primero, estás tratando con IO, así que mira en el java.io
paquete .
Hay dos clases que parecen interesantes: FileFilter y FileNameFilter . Cuando hice clic en el primero, me mostró que había un listFiles()
método en la clase Archivo . Y la documentación para ese método dice:
Devuelve una matriz de nombres de ruta abstractos que indican los archivos en el directorio indicado por este nombre de ruta abstracto.
Al desplazarme hacia arriba en File
JavaDoc, veo los constructores. Y eso es realmente todo lo que necesito para poder crear una File
instancia y llamarla listFiles()
. Al desplazarme aún más, puedo ver información sobre cómo se nombran los archivos en diferentes sistemas operativos.