最近在学习Scala,想要获取指定目录下的所有文件名,但是Scala 中有没有相应的库函数,由于本人是新手,所以弄了半天,好不容易才将网上的一段Scala 递归获取指定目录下所有目录的代码改成获取文件名,特在此备忘,也希望高手指点。
下面是一段递归获取目录名称的代码:
def subdirs(dir: File): Iterator[File] = {稍加改动后变成获取文件名的代码,如下,欢迎指正:
val children = dir.listFiles.filter(_.isDirectory)
children.toIterator ++ children.toIterator.flatMap(subdirs _)
}
def subdirs2(dir: File): Iterator[File] = {
val d = dir.listFiles.filter(_.isDirectory)
val f = dir.listFiles.filter(_.isFile).toIterator
f ++ d.toIterator.flatMap(subdirs2 _)
}
最后再稍微改改,即可获得指定目录下所有的文件名和目录名:
def subdirs3(dir: File): Iterator[File] = {
val d = dir.listFiles.filter(_.isDirectory)
val f = dir.listFiles.toIterator
f ++ d.toIterator.flatMap(subdirs3 _)
}