【发布时间】:2016-11-06 19:27:05
【问题描述】:
我正在解析一个资源文件并在空行上拆分,使用以下代码:
val inputStream = getClass.getResourceAsStream("foo.txt")
val source = scala.io.Source.fromInputStream(inputStream)
val fooString = source.mkString
val fooParsedSections = fooString.split("\\r\\n[\\f\\t ]*\\r\\n")
我相信这是将输入流作为一个完整的字符串拉入内存,然后在正则表达式上拆分。这适用于我正在解析的相对较小的文件,但这并不理想,我很好奇如何改进它--
两个想法是:
- 逐行读取输入流,并有一个我建立的段缓冲区,在空行上拆分
- 基于小型有限状态机逐个字符读取流并解析段
但是,如果可能,我希望不维护可变缓冲区。
有什么建议吗?这只是一个个人有趣的项目,我想学习如何以有效和实用的方式做到这一点。
【问题讨论】:
标签: performance scala functional-programming inputstream