Я хочу реализовать метод, как это:Как реализовать метод для возврата итератора файлов рекурсивно в Java
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 я подозреваю, что мне нужно написать много сложного кода, чтобы это сделать. Есть ли хорошее решение этой проблемы?
Edit: Я хочу возвращаемый итератор быть «ленивым», то есть только вернуть новый файл, когда next()
вызывается. (Это поведение C# yield return
.)
Не могли бы вы объяснить, почему вы хотите, чтобы он ленился? –
Поскольку я не обязательно просматриваю все следующие(), мне может понадобиться остановиться между ними (например, пользователи нажимают «Стоп»). Высокая загрузка структуры очень глубоких каталогов является дорогостоящей, если она нам не нужна. –