迭代某些目录中的文件而没有Java中的循环

时间:2012-11-27 13:40:00

标签: java file loops iteration

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

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

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

2 个答案:

答案 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;
    }
});