我正在尝试列出目录中与正则表达式匹配的文件,例如“.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/