【发布时间】:2021-11-17 21:17:57
【问题描述】:
我正在尝试根据允许的文件列表找到处理多个文件夹中文件的最有效方法。
我有一个我应该处理的允许文件列表。
流程如下
val allowedFiles = List("File1.json","File2.json","File3.json")- 获取目录中的文件夹列表。为此,我可以使用:
def getListOfSubDirectories(dir: File): List[String] =
dir.listFiles
.filter(_.isDirectory)
.map(_.getName)
.toList
- 遍历步骤 2 中的每个文件夹并获取所有文件。为此,我会使用:
def getListOfFiles(dir: String):List[File] = {
val d = new File(dir)
if (d.exists && d.isDirectory) {
d.listFiles.filter(_.isFile).toList
} else {
List[File]()
}
}
- 如果第 3 步中的文件在允许的文件列表中,则调用另一个处理该文件的方法
所以我需要遍历第一个目录,获取文件,检查文件是否需要被处理,然后调用另一个函数。我在考虑双循环,它会起作用,但它是最有效的方式。我知道在 scala 中我应该使用递归函数,但是这个双递归函数调用额外方法失败了。
欢迎任何想法。
【问题讨论】:
标签: scala loops recursion functional-programming nested-loops