ich eine Funktion für jede Datei in einem Verzeichnis und dessen Unter anwenden möchten, wie folgt:scala iteratee rekursiv verarbeiten Dateien und Unterverzeichnisse
def applyRecursively(dir: String, fn: (File) => Any) {
def listAndProcess(dir: File) {
dir.listFiles match {
case null => out.println("exception: dir cannot be listed: " + dir.getPath); List[File]()
case files => files.toList.sortBy(_.getName).foreach(file => {
fn(file)
if (!java.nio.file.Files.isSymbolicLink(file.toPath) && file.isDirectory) listAndProcess(file)
})
}
}
listAndProcess(new File(dir))
}
def exampleFn(file: File) { println(s"processing $file") }
applyRecursively(dir, exampleFn)
das funktioniert. Die Frage hier ist, wie ich diesen Code mit scala Iteratees umgestalten könnte. so etwas wie dieses:
val en = Enumerator.generateM(...) // ???
val it: Iteratee[File, Unit] = Iteratee.foreach(exampleFn)
val res = en.run(it)
res.onSuccess { case x => println("DONE") }
Suchen Sie wirklich, wie Sie den 'Enumerator' erstellen, die die Dateiliste erzeugt? –
Ja, das ist es. –