Как мне создать файл контейнера? - PullRequest
2 голосов
/ 17 сентября 2008

Я хотел бы создать формат файла для моего приложения, как Quake, OO и MS Office 07.

В основном несжатая папка zip или tar-файл.

Мне нужно, чтобы это было кроссплатформенным (Mac и Windows).

Можно ли что-то сделать через командную строку и bash?

Ответы [ 6 ]

4 голосов
/ 17 сентября 2008

Если вам нужен один файл, переносимый на все платформы и содержащий структурированные данные, рассмотрите возможность использования sqlite. Вы получите полнофункциональную ACID-совместимую базу данных, которая существует на диске в виде одного файла.

Существуют библиотеки, с которыми вы можете ссылаться для прямого доступа к файлу, а также инструмент командной строки, который вы также можете использовать. Независимо от того, какой язык вы используете, скорее всего, есть поддержка.

http://www.sqlite.org

2 голосов
/ 17 сентября 2008

Взгляните на формат сжатия с открытым исходным кодом 7Zip . Для ваших конкретных потребностей вы можете использовать его в режиме «Архив», с нулевым сжатием, но очень быстро.

Предоставляет мощный SDK, LZMA, с сайта:

"LZMA - это стандартный метод сжатия по умолчанию в формате 7z в программе 7-Zip. LZMA обеспечивает высокую степень сжатия и очень быструю распаковку, поэтому он очень подходит для встроенных приложений. Например, он может использоваться Сжатие ROM (прошивки).

LZMA SDK предоставляет документацию, примеры, файлы заголовков, библиотеки и инструменты, необходимые для разработки приложений, использующих сжатие LZMA. "

2 голосов
/ 17 сентября 2008

Zip поддерживается везде. Если контейнер - это все, что вам нужно, то это, безусловно, хорошие варианты.

1 голос
/ 17 сентября 2008

SQLite отлично.

Один файл, кроссплатформенность, небольшая библиотека, SQL-доступ к данным, транзакции, вся энчилада.

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

также имеется инструмент командной строки для ручного доступа к данным.

0 голосов
/ 18 сентября 2008

Вместо того, чтобы делать формат, я бы просто выбрал соглашение. Один или несколько именованных файлов в контейнере содержат метаданные, необходимые для доступа к остальным файлам, и знают, что с ними делать. Однако сам контейнер должен быть в каком-то повсеместном формате, например, zip. Не нужно изобретать велосипед здесь.

0 голосов
/ 17 сентября 2008

Первое, что вы должны спросить себя: «Мне действительно нужно делать свое?»

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

Хорошие места для начала: http://www.destructor.de/libtar/index.htm (tar - формат «контейнер») http://www.zlib.net/ (zlib - метод сжатия данных до или после помещения их в контейнер)

Если вы все еще действительно думаете, что вам нужно создать свой собственный, я бы предложил сначала изучить что-то очень простое, например, формат tar:

http://en.wikipedia.org/wiki/Tar_(file_format) или же http://schmidt.devlib.org/file-formats/tar-archive-file-format.html

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