2016-04-18 16 views
2

Ich habe diese Funktion unten zum Filtern einer Liste von Dateien. Ich habe mich gefragt, wie ich filtern könnte, so dass es nur Dateien zurückgibt, die auf .png oder .txt enden?Scala Filter durch Erweiterung

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

Danke für die Hilfe, Leute.

Antwort

4

Fügen Sie einfach eine Bedingung filter:

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

oder verwenden listFiles(FileFilter) statt nur listFiles, aber es ist weniger bequem (es sei denn, Sie verwenden experimentelle Scala single method interface implementation)

0

Genau wie Sie gewöhnlichen Strings filtern würde:

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)