Le code Scala utilise généralement des classes Java pour gérer les E / S, y compris la lecture des répertoires. Vous devez donc faire quelque chose comme:
import java.io.File
def recursiveListFiles(f: File): Array[File] = {
val these = f.listFiles
these ++ these.filter(_.isDirectory).flatMap(recursiveListFiles)
}
Vous pouvez collecter tous les fichiers, puis filtrer à l'aide d'une expression régulière:
myBigFileArray.filter(f => """.*\.html$""".r.findFirstIn(f.getName).isDefined)
Ou vous pouvez incorporer l'expression régulière dans la recherche récursive:
import scala.util.matching.Regex
def recursiveListFiles(f: File, r: Regex): Array[File] = {
val these = f.listFiles
val good = these.filter(f => r.findFirstIn(f.getName).isDefined)
good ++ these.filter(_.isDirectory).flatMap(recursiveListFiles(_,r))
}