2013-02-06 65 views
0

我正在寫一些Java代碼來遍歷文件具有相同的名稱有很多子文件夾的文件夾中,並且做對每個文件的一些邏輯:Java循環

parentFolder/ 
      subfolder1/file.txt 
      subfolder2/file.txt 
      subfolder3/file.txt 
      ... ... 
      subfolderx/file.txt 

上面是什麼樣的結構。

我該怎麼做?

+0

可能的重複http://stackoverflow.com/questions/2056221/recursively-list-files-in-java? – nodakai

+0

http://docs.oracle.com/javase/tutorial/essential/io/walk.html可能會讓你感興趣 – Pshemo

回答

1
String parentFolderPath = "parentFolder"; 
String fileName = "file.txt"; 
File parent = new File(parentFolderPath); 
for (File subFolder : parent.listFiles()) { 
    if (subFolder.isDirectory()) { 
     File f = new File(subFolder, fileName); 
     if (f.exists()) { 
      // your code here 
     } 
    } 
} 
+0

非常感謝Joe,這正是我想要做的!乾杯 – Grant

3

如果您使用的是Java 7,你可以嘗試的路徑API中實現的visitor patternFiles.walkFileTree(...)

用它來傳遞的SimpleFileVisitor一個(匿名)子類,做你想做的,只要最簡單的方法你訪問一個文件。例如,

Files.walkFileTree(parentPath, new SimpleFileVisitor() { 
    @Override FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { 
    // you can do whatever you want with "file" here. 
    System.out.println("The file is: " + file); 
    return FileVisitResult.CONTINUE; 
    } 
}); 
0

我只想拋出另一種方式來做到這一點。這個文件的搜索和處理軟件: http://www.softpedia.com/get/File-managers/JFileProcessor.shtml https://github.com/stant/jfileprocessor

會讓你搜索與水珠或正則表達式的文件,在子文件夾以X或全部深度,根據名稱,大小,日期。您可以保存到列表窗口或文件。 然後你可以運行一個groovy(思考java)腳本來做任何你想要的文件列表;壓縮或tar他們,修改列表字符串像sed,刪除,移動,複製文件,grep或ls -l他們,不管。 它也可以讓你按摩你的列表,如添加,刪除,從另一個列表中減去一個列表。