Другие языки программирования и технологии

Создание файла со своим расширением

Здравствуйте!

У меня такая ситуация: есть проект в C++ Builder, при работе которого будет использоваться группа файлов - это несколько вордовских документов, несколько баз данных и один текстовый файл. Можно ли объединить эту группу файлов в один файл со своим расширением? Если да, то как потом научить проект считывать информацию из этого файла?

Пока я надумал только к использование архивов; при работе проекта архив будет извлекаться во временную папку, после файлы пойдут назад в архив, а временная папка удалится, но мне не особо нравится этот вариант.
Можно например сделать свой формат архива без сжатия.. . И вначале сделать например индексацию архива типа.. .
"Название Файла"<Смещение от начала файла>"Название следующего Файла"<Смещение от начала файла>
поскольку Hex код [00] не встречается в названии фала его можно использовать как разделитель, а смещение может иметь тип без знаковое целое число размером например 4 байта. После чего название следующего файла, И код заголовка будет выглядеть так
"Название файла"00xxxxxxxx"Название следующего файла"00xxxxxxxx
И завершить индексы например кодом ffffffff
здесь xxxxxxxx - это шестнадцатеричное представление числа смещение.
При чтении определенного файла из архива, программа ищет его в заголовке, находит, считывает "смещение", и считывает данные смещаясь на "смещение" относительно начала файла.
Можно в принципе так предварительно его скопировать во временный каталог и работать как с обычным файлом, но лучше сразу использовать данные.
Валерий Порубов
Валерий Порубов
2 224
Лучший ответ
если у тебя работа с MS сущностями - можно воспользоваться технологиями от майкрософт.
по сути все документы MS Office являются контейнерами, содержащими данные OLE объектов.
Ну и технология есть соответствующая для работы с контейнерами - OLE Compound Files
http://www.newobjects.com/pages/ndl/storagesandfiles/SF-OLEFiles.htm

p.s хотя может в последних офисах и переиграли что-нибудь
Игорь Дружинин
Игорь Дружинин
33 788
Твой вариант правельный, даже в плане того, что место будет экономить.
Есть специальные библиотеки для работы с зип архивами, что даже извлекать самому не нужно.

Похожие вопросы