2010-12-06 18 views

Respuesta

26

De javadocs:

Se puede utilizar:

new File("/path/to/folder").listFiles().length 
+1

Tenga en cuenta que 'listFiles()' excluye ciertas entradas. El javadoc dice * "las rutas que denotan el directorio y el directorio principal del directorio no se incluyen en el resultado." * –

+4

Afortunadamente, eso coincide con las expectativas de la mayoría de las personas (aunque difiere de, digamos, 'ls') – Thilo

+2

En caso de que no sea obvio ... listFiles() está asignando una matriz y llenándola con una instancia de archivo para cada archivo en el directorio. Es posible que desee tener cuidado con este método si el directorio puede tener una gran cantidad de archivos. –

5

new File(<directory path>).listFiles().length

3

como para Java 7:

/** 
* Returns amount of files in the folder 
* 
* @param dir is path to target directory 
* 
* @throws NotDirectoryException if target {@code dir} is not Directory 
* @throws IOException if has some problems on opening DirectoryStream 
*/ 
public static int getFilesCount(Path dir) throws IOException, NotDirectoryException { 
    int c = 0; 
    if(Files.isDirectory(dir)) { 
     try(DirectoryStream<Path> files = Files.newDirectoryStream(dir)) { 
      for(Path file : files) { 
       if(Files.isRegularFile(file) || Files.isSymbolicLink(file)) { 
        // symbolic link also looks like file 
        c++; 
       } 
      } 
     } 
    } 
    else 
     throw new NotDirectoryException(dir + " is not directory"); 

    return c; 
} 
+0

¿cómo es esto mejor de las otras respuestas? – Supuhstar

+1

Esto mal usa 'NoSuchFieldException'. Se supone que eso significa que una clase u objeto no tiene un campo particular (variable/constante) dentro de él. – Supuhstar

+0

Para las diferentes versiones de jdk, existen diferentes maneras de obtener la cantidad de archivos en una carpeta. – cane

Cuestiones relacionadas