Вопрос

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

По сути, это несжатая папка zip или tar-файл.

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

http://www.sqlite.org

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

SQLite великолепен.

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

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

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

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

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

Хорошие места для начала: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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top