2011-02-07 9 views

Respuesta

139

Si tiene el nombre del directorio en myDirectoryPath,

import java.io.File; 
... 
    File dir = new File(myDirectoryPath); 
    File[] directoryListing = dir.listFiles(); 
    if (directoryListing != null) { 
    for (File child : directoryListing) { 
     // Do something with child 
    } 
    } else { 
    // Handle the case where dir is not really a directory. 
    // Checking dir.isDirectory() above would not be sufficient 
    // to avoid race conditions with another process that deletes 
    // directories. 
    } 
+1

Javado dice en listFiles(): "Nombres de vías que denota la el directorio en sí y el directorio padre del directorio no están incluidos en el resultado ". – pihentagy

+0

@pihentagy, no lo sabía. Gracias. –

+1

fyi si quiere la carpeta actual, puede usar 'new File (". "); ' – Csanesz

6

Aquí es un ejemplo que muestra todos los archivos en mi escritorio. debes cambiar la variable de ruta a tu ruta.

En lugar de imprimir el nombre del archivo con System.out.println, debe colocar su propio código para operar en el archivo.

public static void main(String[] args) { 
    File path = new File("c:/documents and settings/Zachary/desktop"); 

    File [] files = path.listFiles(); 
    for (int i = 0; i < files.length; i++){ 
     if (files[i].isFile()){ //this line weeds out other directories/folders 
      System.out.println(files[i]); 
     } 
    } 
} 
3

Uso java.io.File.listFiles
O
Si desea filtrar la lista antes de la iteración (o cualquier caso de uso más complicado), el uso de Apache Commons FileUtils. FileUtils.listFiles

+0

'listFiles' se reemplaza para tomar un filtro de archivo o un filtro de nombre de archivo para que no haya necesidad de utilizar apache-commons si lo único que desea es filtrar. Aunque es una buena biblioteca. –

27

Supongo que hay muchas maneras de hacer lo que desea. Esta es una forma que uso. Con la biblioteca commons.io puede iterar sobre los archivos en un directorio. Debe usar el método FileUtils.iterateFiles y puede procesar cada archivo.

Puede encontrar la información aquí: http://commons.apache.org/proper/commons-io/download_io.cgi

He aquí un ejemplo:

Iterator it = FileUtils.iterateFiles(new File("C:/"), null, false); 
     while(it.hasNext()){ 
      System.out.println(((File) it.next()).getName()); 
     } 

Puede cambiar null y poner una lista de extensiones si usted quiere filtro. Ejemplo: {".xml",".java"}

+0

Intentaba no utilizar bibliotecas de terceros, pero FileUtil de apache parece tener muchos métodos útiles. Gracias. +1 –

+0

Sí ... en realidad todas las bibliotecas de commons de apache son realmente buenas, incluidas muchas funciones que podríamos codificar. Commons.collections es otro buen ejemplo. – jomaora

+3

@ john-assymptoth, sin esta lib y solo con la utilidad implementada java, conduciría en 'StackOverflowError' si la biblioteca contiene muchos archivos. (http://java.sun.com/javase/6/docs/api/java/lang/StackOverflowError.html) – Rihards

Cuestiones relacionadas