Я пытаюсь изменить большой файл PostScript в Scala (некоторые из них имеют размер до 1 ГБ). Файл представляет собой группу пакетов, каждый из которых содержит код, представляющий номер пакета, количество страниц и т. д.
Мне необходимо:
- Найдите в файле пакетные коды (которые всегда начинаются с одной и той же строки в файле).
- Подсчитайте количество страниц до следующего батч-кода
- Измените пакетный код, указав количество страниц в каждом пакете.
- Сохраните новый файл в другом месте.
В моем текущем решении используются два итератора (iterA
и iterB
), созданные из Source.fromFile("file.ps").getLines
. Первый итератор (iterA
) проходит в цикле while к началу пакетного кода (при этом каждый раз также вызывается iterB.next
). iterB
затем продолжает поиск до следующего пакетного кода (или конца файла), подсчитывая количество пройденных страниц. Затем он обновляет пакетный код в позиции iterA
, и процесс повторяется.
Это кажется очень не похожим на Scala, и я до сих пор не придумал хороший способ сохранить эти изменения в новый файл.
Каков хороший подход к этой проблеме? Должен ли я полностью отказаться от итераторов? Я бы предпочел сделать это без необходимости сразу вводить или выводить весь ввод или вывод в память.
Спасибо!