Я хочу, чтобы применить функцию для каждого файла в каталоге и подкаталогах, следующим образом:поток Scala рекурсивно обрабатывать файлы и подкаталоги
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)
это работает. ранее они answered как отредактировать этот код с помощью scala Iteratees. Вопрос здесь в том, как я мог бы реорганизовать этот код с помощью потоков Scala. что-то вроде этого:
val stream: Stream[File] = ... // ???
stream.foreach(exampleFn)
'применить функцию для каждого файла' - для каждого файла, или для каждого файла-или-подкаталог? должен ли 'fn (файл)' также вызываться над подкаталогами? –