Obtener los nombres de todos los archivos en una carpeta [duplicado]

Resuelto user680406 asked hace 13 años • 3 respuestas

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 ArrayListcon [000,012,013]as.

¿Cuál es la mejor manera de hacerlo en Java?

PD: estoy en Mac OS X

user680406 avatar Apr 17 '11 22:04 user680406
Aceptado

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?

RoflcoptrException avatar Apr 17 '2011 15:04 RoflcoptrException

Crea un Fileobjeto, pasando la ruta del directorio al constructor. Utilice listFiles()para recuperar una matriz de Fileobjetos 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());
    }
}
Sean Kleinjung avatar Apr 17 '2011 15:04 Sean Kleinjung

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 FileJavaDoc, veo los constructores. Y eso es realmente todo lo que necesito para poder crear una Fileinstancia y llamarla listFiles(). Al desplazarme aún más, puedo ver información sobre cómo se nombran los archivos en diferentes sistemas operativos.

Anon avatar Apr 17 '2011 15:04 Anon