2012-01-14 24 views

Respuesta

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

Tenga en cuenta que getLines devuelve un Iterator[String] lo que no están realmente leyendo todo el archivo en la memoria.

+1

esto es perfecto, gracias !!!! – dave

+2

Similar a una respuesta a su [otra pregunta] (http://stackoverflow.com/q/8865434/115478), esto también filtra los descriptores de archivos. – 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

plagiando a las another answer I posted:

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

O, usando scala-arm:

import resource._ 

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