Je crée un navigateur de fichiers de base et je veux savoir comment obtenir le nombre de fichiers dans un répertoire donné (nécessaire pour les boucles for
qui ajoutent les fichiers à l'arborescence et Table)Obtenir le nombre de fichiers dans un dossier en Java
Répondre
De javadocs:
Vous pouvez utiliser:
new File("/path/to/folder").listFiles().length
new File(<directory path>).listFiles().length
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;
}
comment est-ce mieux à partir des autres réponses? – Supuhstar
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
Pour différentes versions de jdk ont différentes façons d'obtenir le nombre de fichiers dans un dossier. – cane
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." * –
Heureusement, cela correspond aux attentes de la plupart des gens (bien que cela diffère de, disons 'ls') – Thilo
... 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. –