Java Scala-如何仅循环遍历与目录中特定字符串匹配的文件?
我有一个目录,其中的文件看起来像part-00000、part-00001等。还有一些文件我不想迭代,所以我想对以part-开头的文件名进行某种形式的模式匹配/regex/过滤 如何仅遍历以part-开头的文件 例如,您可以使用这个regex部分-.* 如果其余部分仅包含数字,则可以使用部分-\d* 如果您只想进行部分游行-后跟5个数字部分-\d{5,5}Java Scala-如何仅循环遍历与目录中特定字符串匹配的文件?,java,regex,scala,Java,Regex,Scala,我有一个目录,其中的文件看起来像part-00000、part-00001等。还有一些文件我不想迭代,所以我想对以part-开头的文件名进行某种形式的模式匹配/regex/过滤 如何仅遍历以part-开头的文件 例如,您可以使用这个regex部分-.* 如果其余部分仅包含数字,则可以使用部分-\d* 如果您只想进行部分游行-后跟5个数字部分-\d{5,5} 如果您已经拥有文件列表: object Test { def main(args: Array[String]) { v
如果您已经拥有文件列表:
object Test {
def main(args: Array[String]) {
val listOfFiles = List("part-00000", "part-00001", "randomFile", "part-00003", "randomFile2", "part-00004")
val prefix = "part-"
listOfFiles.filter(_.startsWith(prefix)).map(println)
}
}
我们获取列表,首先应用过滤器,然后映射每个元素。
您可以在地图中添加任何需要的逻辑。您可以使用过滤器:
new File("c:/sequence-files/").listFiles.filter(_.getName.startsWith("part-")).foreach(println)
您可以定义如下函数:
def listFiles(file: File, pattern: String): Array[File] = {
val files = file.listFiles()
val regex = pattern.r
files
.filter(f => f.isFile() && regex.findFirstIn(file.getName).isDefined)
.toArray
}
并用目录和模式调用它。因为您希望所有文件都以part-开头,所以模式应该是part-*。下面是一个示例调用
val files = listFiles(new File("path), "part-*")
可能重复的