Scala - 根据名称模式获取文件

时间:2016-09-22 12:16:10

标签: scala

我想根据以下某些模式过滤文件:

 - Team_*.txt (e.g.: Team_Orlando.txt);
 - Name.*.City.txt (e.g.: Name.Robert.California.txt);

或任何名称(模式*。* - 它有空格,因为我的文本被破坏了。)

所有过滤器都来自数据库表,它们是动态的。

我试图避免使用来自SO的命令,如 cp mv 。是否可以使用上述模式过滤文件?

以下是我尝试过的但却出现了正则表达式错误:

  def getFiles(dir:File, filter:String) = {                                           
    (dir.isDirectory, dir.exists) match {                                             
      case (true, true) =>                                                            
        dir.listFiles.filter(f => f.getName.matches(filter))                          
      case _ =>                                                                       
        Array[File]()                                                                 
    }                                                                                 
  }                                                                                   

1 个答案:

答案 0 :(得分:1)

您可以使用java.nio Files.newDirectoryStream(),它将接受所需格式的模式:

val stream = Files.newDirectoryStream(dir, pattern)

检查http://docs.oracle.com/javase/tutorial/essential/io/dirs.html#glob以获取详细说明。