【发布时间】:2013-09-10 17:35:24
【问题描述】:
我有一个需要对目录使用标准压缩格式的 C++ 应用程序。 我考虑过使用 zip 格式。 因此,zlib 是显而易见的。
我的问题是构建字典,即将包含一些带有 zlib 文件的目录压缩为标准 zip 文件。
我读过 zlib 可以做到,但我不明白如何做到这一点。我检查了 minzip 代码。它似乎使用gzip。我可以构建自己的格式,但我希望能够使用 7z 打开这些文件进行调试(以防万一)。
我应该在 zlib 中使用什么来压缩目录?
[编辑] 在 minzip 中 我使用 minzip 将 1 个文件压缩到其 gz 版本 -> 不是 zip,但对我来说很好。 (我会在世界上的各种编译器上使用它——如果客户端平台出现问题,使用标准格式会更容易)
另外,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一个。 -
是的,我看过这个,但我也看不到如何将文件夹传递给它。也许是文件列表。那么如何构建字典呢?