[英]Scala filter by extension
我在下面有這個功能來過濾文件列表。 我想知道如何過濾才能只返回以 .png 或 .txt 結尾的文件?
def getListOfFiles(directoryName: String): Array[String] = {
return (new File(directoryName)).listFiles.filter(_.isFile).map(_.getAbsolutePath)
}
謝謝你們的幫助,伙計們。
只需添加一個條件來filter
:
(new File(directoryName)).listFiles.
filter { f => f.isFile && (f.getName.endsWith(".png") || f.getName.endsWith(".txt")) }.
map(_.getAbsolutePath)
或者使用listFiles(FileFilter)
而不僅僅是listFiles
,但它不太方便(除非您使用實驗性的Scala 單方法接口實現)
就像過濾普通字符串一樣:
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)
替代方法,不那么冗長
import scala.reflect.io.Directory
Directory(directoryName).walkFilter(_.extension=="png")
它返回一個可以用.toArray[String]
轉換的Iterator[Path]
.toArray[String]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.