2016-08-24 4 views
3

Ich habe eine rekursive Methode implementiert, um eine Verzeichnishierarchie nach Dateien mit einer bestimmten Erweiterung zu durchsuchen. aber ich bin nicht überzeugt, dass dies der einfachste Weg ist und es sich um isDirectory(), listFiles() usw.Java geöffnete Dateien mit gegebener Erweiterung in einer Verzeichnishierarchie

Gibt es eine Möglichkeit, das zu tun, ohne explizit eine rekursive Methode zu schreiben: Ich bin so etwas wie find denken, dass ein direkt zurückkehren Liste von Dateien oder Dateinamen (mit ihrem vollständigen Pfad) auf jeder Ebene in der Struktur, die der korrekten Erweiterung entspricht. Ich würde dann nur diese Dateien durchlaufen.

Jede Hilfe wird geschätzt.

+0

Siehe http://stackoverflow.com/questions/15624226/java-search-for-files-in-a-directory – AhmadWabbi

+2

Schauen Sie in Files.walk() verwenden, –

Antwort

2

Verwendung java.io.File#listFiles();

public File[] finder(String dirName){ 
    File dir = new File(dirName); 
    return dir.listFiles(new FilenameFilter() { 
     public boolean accept(File dir, String filename){ 
      return filename.endsWith(".txt"); 
     } 
    }); 
} 

Edit: Wenn Sie möchten, dass das Verzeichnis, in rekursiven einen Blick auf

FileUtilslistFiles(File directory, String[] extensions, boolean recursive)

mit einem Filter entdecken.

+1

Dies ist nicht rekursiv, d. e. es sucht nicht in Unterordnern – AhmadWabbi

+1

Danke, tatsächlich fand ich eine Antwort, die 'FilenameFilter' in der Frage einschloss, die im Kommentar verbunden wurde. Aber Ihre Lösung ist noch kürzer. –

+1

@AhmadWabbi der Autor fragte explizit nach einem * non * rekursiv und das ist wirklich die einfachste und schnell (wie diese Überladung erstellt kein 'File' Objekt für jede gefundene Datei) Weg, um sein Ziel zu erreichen – codejanovic

Verwandte Themen