Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Scala-如何仅循环遍历与目录中特定字符串匹配的文件?_Java_Regex_Scala - Fatal编程技术网

Java Scala-如何仅循环遍历与目录中特定字符串匹配的文件?

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

我有一个目录,其中的文件看起来像part-00000、part-00001等。还有一些文件我不想迭代,所以我想对以part-开头的文件名进行某种形式的模式匹配/regex/过滤

如何仅遍历以part-开头的文件

例如,您可以使用这个regex部分-.* 如果其余部分仅包含数字,则可以使用部分-\d* 如果您只想进行部分游行-后跟5个数字部分-\d{5,5}
如果您已经拥有文件列表:

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-*")
可能重复的