2010-11-18 4 views
1

Gibt es eine Möglichkeit, die Anzahl der Dateien in einem Ordner mit Java zu erhalten? Meine Frage sieht vielleicht einfach aus, aber ich bin neu in diesem Bereich in Java!Abrufen der Anzahl der Dateien in einem Ordner unter Auslassung der Unterordner

Update:

sah ich den Link in den Kommentar. Sie haben nicht erklärt, die Unterordner im Zielordner wegzulassen. Wie geht das? Wie kann man Unterordner weglassen und Dateien in einem bestimmten Verzeichnis abrufen?

Irgendwelche Vorschläge !!

+0

Verwandte Frage: http://stackoverflow.com/questions/687444/counting-the-number-of-files-in-a-directory -use-java –

+0

@CS 1.6, warum? Hast du deine Antwort gefunden? –

+0

@ Der Elite Gentleman: Danke für Ihren Link. Ich muss auch die Unterordner weglassen. Wie soll ich das machen? Siehe mein Update !! –

Antwort

9

Ein Ansatz mit reinem Java wäre:

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

Edit (nach Frage bearbeiten):

Sie Ordner mit einer Variante des Listfiles ausschließen können(), die einen Filefilter akzeptiert. Der FileFilter akzeptiert eine Datei. Sie können testen, ob die Datei ein Verzeichnis ist, und false zurückgeben, wenn dies der Fall ist.

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

... 

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

Leider gibt 'listFiles() 'auch Unterverzeichnisse im Dateipfad zurück. –

0

Diese Methode ermöglicht es Ihnen, Dateien innerhalb des Ordners zu zählen, ohne alle Dateien gleichzeitig in den Speicher zu laden (was gut ist, wenn Sie Ordner mit einer großen Anzahl von Dateien verwenden, die Ihr Programm zum Absturz bringen könnten) Sie legen eine zusätzliche Bedingung neben 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; 
} 

Hier können Sie den Download commons-io-Bibliothek: https://commons.apache.org/proper/commons-io/