У меня есть приложение на C++, которое требует использования стандартного формата сжатия для каталога. Я думал об использовании формата zip. И поэтому zlib был очевиден.Использование zlib для сжатия каталога
Проблема заключается в создании словаря, то есть в сжатии каталога, содержащего некоторые файлы с zlib, в стандартный zip-файл.
Я читал, что zlib делает это, но я не понимаю, как это сделать. Я проверил код minzip. Кажется, он использует gzip. Я мог бы создать свой собственный формат, но я хочу открыть эти файлы, используя 7z для отладки (на всякий случай).
Что следует использовать в zlib для сжатия каталога?
[править] В minzip я использовал minzip сжать 1 файл в его GZ версии -> не пронестись но хорошо для меня. (Я буду иметь это на различных компиляторах в мире - иметь стандартный формат проще, если на клиентской платформе есть проблема)
Также есть этот код в main
. Он перебирает список файлов и записывает их на выход. Но где находится информация о местоположении файла в архиве?
do {
if (uncompr) {
if (copyout) {
file = gzopen(*argv, "rb");
if (file == NULL)
fprintf(stderr, "%s: can't gzopen %s\n", prog, *argv);
else
gz_uncompress(file, stdout);
} else {
file_uncompress(*argv);
}
} else {
if (copyout) {
FILE * in = fopen(*argv, "rb");
if (in == NULL) {
perror(*argv);
} else {
file = gzdopen(fileno(stdout), outmode);
if (file == NULL) error("can't gzdopen stdout");
gz_compress(in, file);
}
} else {
file_compress(*argv, outmode);
}
}
} while (argv++, --argc);
Извините, если это очевидно.
Есть хорошая причина, почему работает 'zip', чтобы сделать работу не проще, и надежнее? –
В папке zlib 'contrib' есть' minizip'. –
Да, я видел это, но я не вижу, как передать ему папку. Может быть, список файлов. но тогда как построить словарь? – dzada