在特定文件夹中迭代文件但没有循环的最佳方法是什么?即,当所有文件都被检查一次时,for循环将结束。
我的示例代码(带循环):
File dir = new File(svnClient.getDestinationPath().getAbsolutePath());
for (File child : dir.listFiles())
{
report.report("File name: " + child.getName());
}
答案 0 :(得分:3)
递归:
public void myMethod(){
File dir = ...;
List<File> files = Arrays.asList(dir.listFiles());
recurse(files.iterator());
}
private void recurse(Iterator<File> iterator){
if (iterator.hasNext()){
File file = iterator.next();
report.report(file.getName());
recurse(iterator);
}
}
答案 1 :(得分:0)
滥用listFiles(FileFilter filter)
方法,将您的逻辑放入回调中并忽略返回值。
File dir = ...
dir.listFiles(new FileFilter() {
boolean accept(File child) {
report.report("File name: " + child.getName());
return false;
}
});