|
Ок, давай поразмыслим.
Требуется написать редактор больших файлов: должен включать обычные "текстовые" операции: вставка, изменение и удаление данных в произвольном месте, быстрая навигация по содержимому.
Предлагаю следующий подход:
Файл при работе с программой не изменяется вообще!!! Сохраняются только те изменения, которые внес пользователь. Изменения вносятся в файл только при нажатии на кнопку Save (или при выходе из программы).
Поэтому наша программа разбивается на две части:
1. Виртуальный просмоторщик и редактор данных файла (virtual-editor). Данный компонент будет сохранять только те изменения, которые мы внесли в файл. Но должен делать вид, что вносит изменения в файл!!! Поэтому я назвал его виртуальным (все изменения хранятся в памяти).
2. Часть, совершающая физическое редактирование файла (commiter). Этот компонент уже корежит данные на диске.
|