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

  • DancingIsAPassion

    DancingIsAPa

    29 AĞUSTOS 2009
  • FamilyFeud

    FamilyFeud

    22 AĞUSTOS 2006
  • xSammyJoe1

    xSammyJoe1

    19 Temmuz 2011