Scala:列出目录中与正则表达式匹配的文件

标签 scala

我正在尝试列出目录中与正则表达式匹配的文件,例如“.csv$”这与 Scala & DataBricks: Getting a list of Files 非常相似

我一直在兜圈子,试图弄清楚 Scala 如何列出文件目录并通过正则表达式进行过滤。

import java.io.File

def getListOfFiles(dir: String):List[File] = {
    val d = new File(dir)
    if (d.exists && d.isDirectory) {
        d.listFiles.filter(_.isFile).toList
    } else {
        List[File]()
    }
}
val name : String = ".csv"

val files = getListOfFiles("/home/con/Scripts").map(_.path).filter(_.matches(name))
println(files)

报错

/home/con/Scripts/scala/find_files.scala:13: error: value path is not a member of java.io.File
val files = getListOfFiles("/home/con/Scripts").map(_.path).filter(_.matches(name))

我正在尝试找出与 dbutils.fs.ls 等价的常规 Scala,但我却无法理解。

如何列出 Scala 中常规目录中的文件?

最佳答案

错误报告 path 未在 java.io.File 中定义,但事实并非如此。

如果你想按名称匹配,为什么不获取文件名呢?另外,如果您想根据文件扩展名进行匹配,您的正则表达式有点不对劲。

解决这两个问题:

val name : String = ".+\\.csv"
val files = getListOfFiles("/path/to/files/location")
  .map(f => f.getName)
  .filter(_.matches(name))

将在/path/to/files/location文件夹中输出.csv文件。

关于Scala:列出目录中与正则表达式匹配的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58347486/

相关文章:

xml - 发布 DTD/XXE XML 时测试 Scala Play 行为

scala - 如何通过Scala Spark-Shell将大RDD写入本地磁盘?

scala - 如何在 sbt 控制台中加载 scala 文件?

scala - Scala中的泛型不变量协变对变量

scala - 编解码器组合器 : Header contains magic number that is used to discriminate types

java - 如何使用 jar 中的主类进行 spark-submit?

scala - 将消息发送到Scala中的函数

scala - Lift 中 MegaProtoUser 的替代方案

scala - Flink : No operators defined in streaming topology.无法执行

scala - 覆盖值的行为的原理