2010-12-06 37 views

Répondre

26

De javadocs:

Vous pouvez utiliser:

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

Notez que 'ListFiles()' exclut certaines entrées. Le javadoc indique * "les chemins indiquant le répertoire lui-même et le répertoire parent du répertoire ne sont pas inclus dans le résultat." * –

+4

Heureusement, cela correspond aux attentes de la plupart des gens (bien que cela diffère de, disons 'ls') – Thilo

+2

... listFiles() alloue un tableau et le remplit avec une instance File pour chaque fichier du répertoire. Vous pouvez être prudent en utilisant cette méthode si le répertoire peut potentiellement avoir un grand nombre de fichiers. –

5

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

3

comme pour 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

comment est-ce mieux à partir des autres réponses? – Supuhstar

+1

Cette utilisation incorrecte de 'NoSuchFieldException'. Cela est supposé signifier qu'une classe ou un objet n'a pas de champ particulier (variable/constante) en son sein. – Supuhstar

+0

Pour différentes versions de jdk ont ​​différentes façons d'obtenir le nombre de fichiers dans un dossier. – cane