2010-11-18 24 views
1

Est-il possible d'obtenir le nombre de fichiers dans un dossier en utilisant Java? Ma question semble peut-être simple, mais je suis nouveau dans cette région de Java!Obtenir le nombre de fichiers dans un dossier, en omettant les sous-dossiers

Mise à jour:

J'ai vu le lien dans le commentaire. Ils n'ont pas expliqué d'omettre les sous-dossiers dans le dossier cible. Comment faire cela? Comment omettre les sous-dossiers et obtenir des fichiers dans un répertoire spécifié?

Toutes les suggestions !!

+0

question connexe: http://stackoverflow.com/questions/687444/counting-the-number-of-files-in-a-directory -using-java –

+0

@CS 1.6, pourquoi? Avez-vous trouvé votre réponse? –

+0

@ The Gentleman Elite: Merci pour votre lien. J'ai également besoin d'omettre les sous-dossiers. Comment dois-je faire cela? Voir ma mise à jour !! –

Répondre

9

Une approche avec Java pur serait:

int nFiles = new File(filename).listFiles().length; 

Modifier (après modification de la question):

Vous pouvez exclure des dossiers avec une variante de ListFiles() qui accepte un FileFilter. Le FileFilter accepte un fichier. Vous pouvez tester si le fichier est un répertoire et renvoyer false si c'est le cas.

int nFiles = new File(filename).listFiles(new MyFileFilter()).length; 

... 

private static class MyFileFilter extends FileFilter { 
    public boolean accept(File pathname) { 
    return ! pathname.isDirectory(); 
    } 
} 
+0

Malheureusement, 'listFiles()' renvoie aussi des sous-répertoires dans le chemin du fichier. –

0

Cette méthode vous permet de compter les fichiers dans le dossier sans charger tous les fichiers en même temps (ce qui est bon pour les dossiers avec beaucoup de fichiers qui pourraient planter votre programme). vous mettez des conditions supplémentaires à côté de f.isFile().

import org.apache.commons.io.FileUtils; 
private int countFilesInDir(File dir){ 
    int cnt = 0; 
    if(dir.isDirectory()){ 
     Iterator it = FileUtils.iterateFiles(dir, null, false); 
     while(it.hasNext()){ 
      File f = (File) it.next(); 
      if (f.isFile()){ //this line weeds out other directories/folders 
       cnt++; 
      } 
     } 
    } 
    return cnt; 
} 

Ici vous pouvez télécharger la bibliothèque commons-io: https://commons.apache.org/proper/commons-io/