最近在学习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 _)
-
}