我正在寫一些Java代碼來遍歷文件具有相同的名稱有很多子文件夾的文件夾中,並且做對每個文件的一些邏輯:Java循環
parentFolder/
subfolder1/file.txt
subfolder2/file.txt
subfolder3/file.txt
... ...
subfolderx/file.txt
上面是什麼樣的結構。
我該怎麼做?
我正在寫一些Java代碼來遍歷文件具有相同的名稱有很多子文件夾的文件夾中,並且做對每個文件的一些邏輯:Java循環
parentFolder/
subfolder1/file.txt
subfolder2/file.txt
subfolder3/file.txt
... ...
subfolderx/file.txt
上面是什麼樣的結構。
我該怎麼做?
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
}
}
}
非常感謝Joe,這正是我想要做的!乾杯 – Grant
如果您使用的是Java 7,你可以嘗試的路徑API中實現的visitor pattern:Files.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;
}
});
看一看在Apache的百科全書FileUtils類。
他們有FileUtilsiterateFiles(File directory,IOFileFilter fileFilter,IOFileFilter dirFilter)方法,您可以指定您的文件過濾器。
我只想拋出另一種方式來做到這一點。這個文件的搜索和處理軟件: http://www.softpedia.com/get/File-managers/JFileProcessor.shtml https://github.com/stant/jfileprocessor
會讓你搜索與水珠或正則表達式的文件,在子文件夾以X或全部深度,根據名稱,大小,日期。您可以保存到列表窗口或文件。 然後你可以運行一個groovy(思考java)腳本來做任何你想要的文件列表;壓縮或tar他們,修改列表字符串像sed,刪除,移動,複製文件,grep或ls -l他們,不管。 它也可以讓你按摩你的列表,如添加,刪除,從另一個列表中減去一個列表。
可能的重複http://stackoverflow.com/questions/2056221/recursively-list-files-in-java? – nodakai
http://docs.oracle.com/javase/tutorial/essential/io/walk.html可能會讓你感興趣 – Pshemo