我如何计算scala中unix命令行上与wc -l
类似的文本文件中的行数?
答案 0 :(得分:18)
io.Source.fromFile("file.txt").getLines.size
请注意,getLines
会返回Iterator[String]
,因此您实际上并未将整个文件读入内存。
答案 1 :(得分:4)
def lineCount(f: java.io.File): Int = {
val src = io.Source.fromFile(f)
try {
src.getLines.size
} finally {
src.close()
}
}
或者,使用scala-arm:
import resource._
def firstLine(f: java.io.File): Int = {
managed(io.Source.fromFile(f)) acquireAndGet { src =>
src.getLines.size
}
}
答案 2 :(得分: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) }