我正在尝试读取一个名称为 K2ssal.timestamp 的文件。 我想将文件名的时间戳部分作为通配符处理。 我该如何实现? 在文件名后尝试*,但不起作用。
var getK2SSal: Iterator[String] = Source.fromFile("C://Users/nrakhad/Desktop/Work/Data stage migration/Input files/K2Ssal.*").getLines()
答案 0 :(得分:2)
您可以将Files.newDirectoryStream
用于目录+ glob:
import java.nio.file.{Paths, Files}
val yourFile = Files.newDirectoryStream(
Paths.get("/path/to/the/directory"), // where is the file?
"K2Ssal.*" // glob of the file name
).iterator.next // get first match
答案 1 :(得分:1)
对自己的误解:除非专门为此实现了库调用,但是使用通配符根本无法按您期望的那样工作。
含义:文件系统不了解通配符。它只知道现有的文件和文件夹。您可以将*
放在某些命令上,并用文件名替换通配符,这是所使用工具的属性。通常,允许您查询文件系统的编程API 不包括特殊的通配符处理。
换句话说:像这样添加星号是没有意义的。
您必须退后一步,并编写代码来主动搜索文件本身。 Here是scala的一些示例。
答案 2 :(得分:0)
您可以读取目录并根据字符串对文件进行过滤。
val l = new File("""C://Users/nrakhad/Desktop/Work/Data stage migration/Input files/""").listFiles
val s = l.filter(_.toString.contains("K2Ssal."))