我在下面有这个功能来过滤文件列表。我想知道如何过滤,所以它只返回以.png或.txt结尾的文件?
def getListOfFiles(directoryName: String): Array[String] = {
return (new File(directoryName)).listFiles.filter(_.isFile).map(_.getAbsolutePath)
}
谢谢你的帮助,伙计们。
答案 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]
进行转换