文件通配符使用*

时间:2018-07-20 11:09:29

标签: java scala

我正在尝试读取一个名称为 K2ssal.timestamp 的文件。 我想将文件名的时间戳部分作为通配符处理。 我该如何实现? 在文件名后尝试*,但不起作用。

var getK2SSal: Iterator[String] = Source.fromFile("C://Users/nrakhad/Desktop/Work/Data stage migration/Input files/K2Ssal.*").getLines()

3 个答案:

答案 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."))