Scala:使用自定义分隔符读取文件

时间:2015-02-13 09:25:04

标签: scala

逐行读取文件很简单:

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方法使用自定义分隔符迭代文件?

1 个答案:

答案 0 :(得分:1)

scala.io.Source.fromFile(file).getLines()来电String java.io.BufferedReader.readLine(boolean ignoreLF) throws IOException

改变它并不容易。使用Scanner是一种好方法。