scala.io.Source
从文件中读取时, Byte order mark使我的正则表达式失败。 This answer是使用java.io
的轻量级解决方案。 scala.io.Source
是否有类似内容,或者由于单字节而必须恢复为Java?
答案 0 :(得分:0)
基于Joe K的评论中的想法,并使用Andrei Punko's answer解决Java和Alvin Alexander's Scala code中的问题,最简单的解决方案是将可能包含字节顺序标记的文件读入数组字符串是:
@throws[IOException]
def skip(reader: Reader): Unit = {
reader.mark(1)
val possibleBOM = new Array[Char](1)
reader.read(possibleBOM)
if (possibleBOM(0) != '\ufeff') reader.reset
}
val br = new BufferedReader(new InputStreamReader(new FileInputStream(file)))
skip(br)
val lines = {
val ls = new ArrayBuffer[String]()
var l: String = null
while ({l= br.readLine; l != null}) {
ls.append(l)
}
br.close
ls.toArray
}