Как создать пользовательский тип файла из папки файлов?
У меня простой вопрос, у меня есть куча файлов (изображений и текстов) в одной папке, есть ли способ упаковать все эти файлы в один файл (необработанный файл с заголовком или, предпочтительно, заархивированный) и распаковать его во время выполнения использовать в другой программе?
Например, у меня есть изображения, 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"};
}