Как создать пользовательский тип файла из папки файлов?

У меня простой вопрос, у меня есть куча файлов (изображений и текстов) в одной папке, есть ли способ упаковать все эти файлы в один файл (необработанный файл с заголовком или, предпочтительно, заархивированный) и распаковать его во время выполнения использовать в другой программе?

Например, у меня есть изображения, 3d-модель и некоторые текстовые файлы, я хочу упаковать их в один архив, а затем иметь возможность распаковать файлы из архива для использования в другой моей программе, которая может загружать и управлять этими файлами.,

2 ответа

Решение

Я использовал zziplib ( http://zziplib.sourceforge.net/) в прошлом. У меня не было особых проблем с его интеграцией в мою кроссплатформенную систему (Windows, Linux, Mac OSX). Я просто использовал другое расширение, чтобы было ясно, что это должно быть использовано с моей программой. Так что я могу переименовать мои *.lvl файлы в *.zip и открыть файл с помощью 7zip, winrar, file-roller и т. Д.

Есть также много других библиотек:

Zlib - http://zlib.net/ - не имеет формата файла, но использует gzip.

7-zip SDK - http://www.7-zip.org/sdk.html - Поддерживает LZMA, zip, bzip2 и некоторые другие.

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

Вы также можете проверить: библиотеки сжатия для C++

Это зависит от того, какой язык вы используете. Например, я использую lua для разработки и компиляции исполняемых файлов с помощью стороннего программного обеспечения под названием luart [https://www.luart.org], которое поставляется со встроенными библиотеками для управления файлами и других задач. Одной из этих библиотек является библиотека сжатия, которая позволяет использовать такие функции:

      local zip = require("compression")
return(zip.gunzip("myfile.zip"))

или синтезатораsystemбиблиотека:

      dependencies{
    sys=system;
}
sys.file:compress{file="myfile.zip";
    returnDestination="%USERPROFILE%\\folder";
}
sys.instance:open{file="explorer.exe";
    args={startDir="%USERPROFILE%\\folder\\myfile"};
}
Другие вопросы по тегам