我创建了一个函数,其中接受输入流作为参数并返回由字符串组成的迭代器。我按如下方式完成此操作:
def lineEntry(fileInputStream:InputStream):Iterator[String] = {
Source.fromInputStream(fileInputStream).getLines()
}
我使用的方法如下:
val fStream = getSomeInputStreamFromSource()
lineEntry(fStream).foreach{
processTheLine(_)
}
现在,如果 lineEntry 方法在使用 foreach 迭代输入流时遇到错误字符,它很可能会崩溃。
有哪些方法可以应对这种情况?
最佳答案
快速解决方案(适用于 Scala 2.10):
def lineEntry(fileInputStream:InputStream):Iterator[String] = {
implicit val codec = Codec.UTF8 // or any other you like
codec.onMalformedInput(CodingErrorAction.IGNORE)
Source.fromInputStream(fileInputStream).getLines()
}
在 Scala 2.9 中存在一个小差异:
implicit val codec = Codec(Codec.UTF8)
编解码器
还有一些配置选项,您可以在这种情况下调整其行为。
关于scala - 读取行期间的 Source.fromInputStream 异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15845422/