Scala过滤扩展名

时间:2016-04-18 11:49:09

标签: scala file filter

我在下面有这个功能来过滤文件列表。我想知道如何过滤,所以它只返回以.png或.txt结尾的文件?

 def getListOfFiles(directoryName: String): Array[String] = {
 return (new File(directoryName)).listFiles.filter(_.isFile).map(_.getAbsolutePath)
} 

谢谢你的帮助,伙计们。

3 个答案:

答案 0 :(得分:5)

只需向filter添加条件:

(new File(directoryName)).listFiles.
  filter { f => f.isFile && (f.getName.endsWith(".png") || f.getName.endsWith(".txt")) }.
  map(_.getAbsolutePath)

或使用listFiles(FileFilter)代替listFiles,但不太方便(除非您使用实验Scala single method interface implementation

答案 1 :(得分:0)

就像过滤普通字符串一样:

val filenames = List("batman.png", "shakespeare.txt", "superman.mov")
filenames.filter(name => name.endsWith(".png") || name.endsWith(".txt"))
// res1: List[String] = List(batman.png, shakespeare.txt)

答案 2 :(得分:0)

替代方法,不再那么冗长

import scala.reflect.io.Directory
Directory(directoryName).walkFilter(_.extension=="png")

它返回一个Iterator[Path],可以用.toArray[String]进行转换