gpt4 book ai didi

scala - 如何列出 scala 子目录中的所有文件?

转载 作者:行者123 更新时间:2023-12-03 05:01:23 26 4
gpt4 key购买 nike

是否有一种很好的“scala-esque”(我想我的意思是函数式)方式来递归列出目录中的文件?匹配特定模式怎么样?

例如,递归地匹配 c:\temp 中的 "a*.foo" 的所有文件。

最佳答案

Scala 代码通常使用 Java 类来处理 I/O,包括读取目录。所以你必须做类似的事情:

import java.io.File
def recursiveListFiles(f: File): Array[File] = {
val these = f.listFiles
these ++ these.filter(_.isDirectory).flatMap(recursiveListFiles)
}

您可以收集所有文件,然后使用正则表达式进行过滤:

myBigFileArray.filter(f => """.*\.html$""".r.findFirstIn(f.getName).isDefined)

或者您可以将正则表达式合并到递归搜索中:

import scala.util.matching.Regex
def recursiveListFiles(f: File, r: Regex): Array[File] = {
val these = f.listFiles
val good = these.filter(f => r.findFirstIn(f.getName).isDefined)
good ++ these.filter(_.isDirectory).flatMap(recursiveListFiles(_,r))
}

关于scala - 如何列出 scala 子目录中的所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2637643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com