我想根据以下某些模式过滤文件:
- 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]()
}
}
答案 0 :(得分:1)
您可以使用java.nio Files.newDirectoryStream()
,它将接受所需格式的模式:
val stream = Files.newDirectoryStream(dir, pattern)
检查http://docs.oracle.com/javase/tutorial/essential/io/dirs.html#glob以获取详细说明。