ich eine Funktion für jede Datei in einem Verzeichnis und dessen Unter anwenden möchten, wie folgt:scala Stream rekursiv Dateien und Unterverzeichnisse verarbeiten
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 (file.isDirectory) listAndProcess(file)
})
}
}
listAndProcess(new File(dir))
}
def exampleFn(file: File) { println(s"processing $file") }
applyRecursively(dir, exampleFn)
das funktioniert. zuvor sie answered wie diesen Code mit scala Iteratees umzuformen. Die Frage ist, wie ich diesen Code mit Hilfe von Scala-Streams umgestalten könnte. etwas wie folgt aus:
val stream: Stream[File] = ... // ???
stream.foreach(exampleFn)
'gelten eine Funktion für jede Datei' - für jede Datei oder für jede Datei-oder-Unterverzeichnis? sollte 'fn (file)' auch über Unterverzeichnisse aufgerufen werden? –