Quiero poner en práctica un método como este:cómo implementar un método para devolver Iterador de archivos de forma recursiva en 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)
}
En C#, esto fácilmente se puede implementar con la palabra clave yield return
. En Java, sospecho que tengo que terminar escribiendo un código complicado para hacerlo. ¿Hay alguna buena solución para este problema?
Editar: Quiero que el iterador devuelto sea "flojo", es decir, que solo devuelva un nuevo archivo cuando se invoca next()
. (Ese es el comportamiento de C# yield return
ofertas.)
¿Puedes explicar por qué quieres que sea flojo? –
Como no paso necesariamente todo el siguiente(), es posible que desee detenerme en el medio (es decir, que los usuarios hagan clic en Detener). La carga ansiosa de una estructura de directorios muy profunda es costosa si no la necesitamos. –