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 rassembler tous les fichiers et les filtrer à l'aide d'une expression rationnelle :
myBigFileArray.filter(f => """.*\.html$""".r.findFirstIn(f.getName).isDefined)
Vous pouvez également incorporer les expressions rationnelles 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))
}
1 votes
os-lib fournit une interface Scala élégante pour les opérations sur le système de fichiers, comme la liste récursive des fichiers qui correspondent à un motif. Voir ma réponse pour une solution simple. Les développeurs Scala n'ont pas besoin de souffrir avec les bibliothèques de bas niveau java.io et java.nio qui vous obligent à écrire du code inutilement verbeux et complexe.