【发布时间】:2012-01-14 21:41:28
【问题描述】:
如何在 scala 的 unix 命令行上计算类似于 wc -l 的文本文件中的行数?
【问题讨论】:
如何在 scala 的 unix 命令行上计算类似于 wc -l 的文本文件中的行数?
【问题讨论】:
io.Source.fromFile("file.txt").getLines.size
请注意,getLines 返回 Iterator[String],因此您实际上并未将整个文件读入内存。
【讨论】:
来自another answer I posted的抄袭:
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
}
}
【讨论】:
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) }
【讨论】: