我创建了一个函数,其中接受输入流作为参数并返回由字符串组成的迭代器。我按如下方式完成此操作:
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)
Codec
还有一些配置选项,您可以在这种情况下调整其行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)