如何实现一个方法在Java中递归返回文件的迭代器

时间:2009-04-24 09:52:23

标签: java iterator

我想实现这样的方法:

public Iterator<File> getFiles(String root) {
  // return an Iterator looping through all files in root and all files in sub-directories of roots (recursively)
}

在C#中,可以使用yield return关键字轻松实现。在Java中,我怀疑我必须编写大量复杂的代码才能完成它。这个问题有什么好的解决方案吗?

编辑:我希望返回的Iterator“懒惰”,即只在调用next()时返回一个新文件。 (这是C#的yield return提供的行为。)

3 个答案:

答案 0 :(得分:5)

此代码可能是您的解决方案http://snippets.dzone.com/posts/show/3532

答案 1 :(得分:3)

Apache Commons FileUtils提供iterator方法来遍历目录和子目录。这样做你想要的,应该为你节省很多工作。

e.g。

Iterator fi = iterateFiles(new File("."), String[] {".csv"}, true)

查找当前目录下的所有.csv文件。

答案 2 :(得分:0)

我可能错过了一些东西,但你为什么不做自己的迭代器呢? 实现迭代器的类。然后你只需要实现一个懒惰 迭代器中的next()方法。