我正在尝试在 Scala 中修改一个大的 PostScript 文件(有些大到 1GB)。该文件是一组批次,每个批次包含一个代码,代表批次号、页数等。
我需要:
- 在文件中搜索批处理代码(始终以文件中的同一行开头)
- 计算页数直到下一个批处理代码
- 修改批次代码以包括每个批次中有多少页。
- 将新文件保存在其他位置。
我当前的解决方案使用两个迭代器(iterA
和iterB
),从Source.fromFile("file.ps").getLines
. 第一个迭代器 ( iterA
) 在 while 循环中遍历到批处理代码的开头(iterB.next
每次也被调用)。iterB
然后继续搜索直到下一个批处理代码(或文件末尾),计算它通过的页数。iterA
然后,它会更新' 位置的批处理代码,并重复该过程。
这看起来非常不像 Scala,而且我还没有设计出一种将这些更改保存到新文件中的好方法。
什么是解决这个问题的好方法?我应该完全放弃迭代器吗?我宁愿这样做,而不必一次将整个输入或输出输入内存。
谢谢!