0

迭代特定文件夹中的文件但没有循环的最佳方法是什么?即,当所有文件都被检查一次时,for 循环将结束。

我的示例代码(带循环):

        File dir = new File(svnClient.getDestinationPath().getAbsolutePath());
          for (File child : dir.listFiles())
          {
            report.report("File name: " + child.getName());
          }
4

2 回答 2

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);
     }
}
于 2012-11-27T13:46:37.773 回答
0

滥用listFiles(FileFilter filter)方法,将您的逻辑放在回调中并忽略返回值。

File dir = ...
dir.listFiles(new FileFilter() {
    boolean accept(File child) {
        report.report("File name: " + child.getName());
        return false;
    }
});
于 2012-11-27T16:44:59.200 回答