SORU
14 NİSAN 2010, ÇARŞAMBA


Nasıl scala bir alt dizinindeki tüm dosyaları listeler?

Bir "scala-vari" (işlevsel yani sanırım) yinelemeli olarak Listeleme şekilde bir dizindeki dosyalar? iyi var Ne belirli bir desen eşleştirme?

Örneğin işe yaramayan c:\temp "a*.foo" eşleşen dosyaları.

CEVAP
14 NİSAN 2010, ÇARŞAMBA


Scala kod genellikle G/Ç, dizinler de dahil olmak üzere okuma ile başa çıkmak için Java sınıfları kullanır. Bir şey gibi yapmak zorunda:

import java.io.File
def recursiveListFiles(f: File): Array[File] = {
  val these = f.listFiles
  these    these.filter(_.isDirectory).flatMap(recursiveListFiles)
}

Tüm dosyaları toplamak ve bir düzenli ifade kullanarak filtre olabilir:

myBigFileArray.filter(f => """.*\.html$""".r.findFirstIn(f.getName).isDefined)

Ya da özyinelemeli arama ve normal ifade dahil olabilir:

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))
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FOSDEM

    FOSDEM

    13 Ocak 2009
  • Justin Case

    Justin Case

    3 EKİM 2011
  • Tom Megalis

    Tom Megalis

    18 NİSAN 2006