2016-08-24 60 views
3

我實現了一個遞歸方法來遍歷目錄層次結構,以查找具有給定擴展名的文件;但我不認爲這是最簡單的方法,它涉及isDirectory()listFiles()在目錄層次結構中給定擴展名的Java打開文件

有沒有辦法做到這一點沒有明確地寫一個遞歸方法:我想這樣find,將直接返回在匹配正確擴展名的結構中的任何級別上的文件或文件名列表(帶有完整路徑)。然後我會循環這些文件。

任何幫助表示讚賞。

+0

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

+2

。看看Files.walk() –

回答

2

使用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"); 
     } 
    }); 
} 

編輯: 如果你想發現在遞歸目錄看看

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

一個過濾器。

+1

這不是遞歸的,我。即它不會在子文件夾中搜索 – AhmadWabbi

+1

謝謝,的確,我在評論中鏈接的問題中找到了涉及「FilenameFilter」的答案。但是你的解決方案更短。 –

+1

@AhmadWabbi作者明確要求*非遞歸,這​​確實是最簡單和快速的(因爲這個重載不會爲每個找到的文件創建一個'File'對象)來實現他的目標 – codejanovic

相關問題