Изменение большого файла в Scala

Я пытаюсь изменить большой файл PostScript в Scala (некоторые из них имеют размер до 1 ГБ). Файл представляет собой группу пакетов, каждая из которых содержит код, который представляет номер пакета, количество страниц и т. Д.

Мне нужно:

  1. Искать в файле коды пакетов (которые всегда начинаются с одного и того же строку в файле)
  2. Подсчитайте количество страниц до следующего кода пакета
  3. Измените код пакета, чтобы указать, сколько страниц находится в каждом пакете.
  4. Сохраните новый файл в другом месте.

В моем текущем решении используются два итератора ( iterA и iterB ), созданные из Source.fromFile ("file.ps"). GetLines . Первый итератор ( iterA ) проходит в цикле while до начала пакетного кода (при этом каждый раз также вызывается iterB.next ). iterB затем продолжает поиск до следующего кода пакета (или до конца файла), подсчитывая количество страниц, которые он проходит по мере продвижения. Затем он обновляет пакетный код в позиции iterA , и процесс повторяется.

Это очень не похоже на Scala, и я до сих пор не разработал хороший способ сохранить эти изменения в новый файл.

Как лучше всего подойти к этой проблеме? Должен ли я полностью отказаться от итераторов? Я бы предпочел сделать это без необходимости иметь сразу весь ввод или вывод в память.

Спасибо!

6
задан Andrew Conner 16 February 2012 в 20:53
поделиться