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

  • NextKsa

    NextKsa

    7 EKİM 2009
  • paikimchung

    paikimchung

    12 Mayıs 2006
  • Tire Rack

    Tire Rack

    31 Mayıs 2007