2012-01-14 38 views
5

Scala'daki unix komut satırında wc -l benzeri bir metin dosyasında satır sayısını hesaplamaya nasıl giderim? getLines böylece aslında belleğe dosyanın tamamını okumuyorsun bir Iterator[String] döndürendosyadaki satır sayısı - Scala

cevap

17
io.Source.fromFile("file.txt").getLines.size 

Not. scala-arm kullanarak,

def lineCount(f: java.io.File): Int = { 
    val src = io.Source.fromFile(f) 
    try { 
    src.getLines.size 
    } finally { 
    src.close() 
    } 
} 

Veya:

+1

bu mükemmel, teşekkürler !!!! – dave

+2

[Diğer soru] 'nun (http://stackoverflow.com/q/8865434/115478) bir cevabı gibi, bu da dosya tanıtıcılarını sızdırıyor. – leedm777

0
val source = Source.fromFile(new File("file")).getLines 
var n = 1 ; while (source.hasNext) { printf("%d> %s", n, source.next) ; n += 1 } 


val source = Source.fromFile(new File("file")).getLines 
for ((line, n) <- source zipWithIndex) { printf("%d> %s", (n + 1), line) } 
3

another answer I posted gelen kopya

import resource._ 

def firstLine(f: java.io.File): Int = { 
    managed(io.Source.fromFile(f)) acquireAndGet { src => 
    src.getLines.size 
    } 
} 
İlgili konular