逐行读取文件很简单:
scala.io.Source.fromFile(file).getLines()
但是如何使用与换行符不同的分隔符迭代文件?
我可以将整个文件作为字符串加载然后将其拆分,但我希望在大文件(readDelimited1
)上执行效果不佳。或者,我可以决定包装Java的扫描仪,它可能会表现得更好,但它有点难看(readDelimited2
)。
def readDelimited1(file: java.io.File, delimiter : String) : Iterator[String] = {
scala.io.Source.fromFile(file).getLines().mkString("\n").split(delimiter).iterator
}
def readDelimited2(file: java.io.File, delimiter : String) : Iterator[String] = {
val scanner = new java.util.Scanner(file).useDelimiter(delimiter)
collection.JavaConversions.asScalaIterator(scanner)
}
是否有一种不错的Scala'isque方法使用自定义分隔符迭代文件?
答案 0 :(得分:1)
scala.io.Source.fromFile(file).getLines()
来电String java.io.BufferedReader.readLine(boolean ignoreLF) throws IOException
改变它并不容易。使用Scanner
是一种好方法。