Каковы некоторые рекомендации для написания документов с ведущими данными заголовка? - PullRequest
2 голосов
/ 15 сентября 2010

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

Я работаю над набором инструментов для чтения и записи Файлы Mobipocket (он же Kindle eBooks), используя C #, и сталкиваюсь с вопросом дизайна, когда речь идет о написании новые файлы. Основной формат файла начинается с заголовка, который включает информацию о смещении / размере для всех следующих «блоков» данных. Это оставляет мне два следующих варианта:

  1. Соберите все данных файла (блоков) заранее, прежде чем начать запись файла. Это может означать, что большие объемы содержимого документа находятся в памяти, но имеет то преимущество, что позволяет мне записать файл за один проход только вперед.

  2. Записать в заголовок данные заполнителя, за которыми следуют неизвестные заранее данные файла, и затем выполнить поиск в заголовке и исправить данные смещения / размера непосредственно перед файл закрыт. Это кажется более сложным, но имеет то преимущество, что позволяет передавать содержимое документа по мере его создания, что потенциально сокращает объем используемой памяти.

Могут быть и другие проекты, о которых я хотел бы услышать. В настоящее время я склоняюсь к # 1, потому что я не ожидаю особо больших документов и думаю, что с моделью программирования легче разобраться. Если у вас был какой-либо положительный или отрицательный опыт работы с одним из этих проектов (или другим предложенным предложением), пожалуйста, сообщите мне!

1 Ответ

0 голосов
/ 15 сентября 2010

Я бы выбрал немного более сложный второй дизайн. Это не требует слишком больших усилий и гарантирует, что ваш код по-прежнему будет работать без сбоев, если кто-то решит добавить в него файл объемом 1000 ГБ через несколько лет.

Мне тоже было бы интересно посмотреть, какие другие подходы могут быть рекомендованы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...