簡體   English   中英

Scala 過濾器擴展

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM