gpt4 book ai didi

c++ - 使用 zlib 压缩目录

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:11:12 27 4
gpt4 key购买 nike

我有一个 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);

抱歉,如果这很明显。

最佳答案

minizip.c有关如何使用 minizip 创建 zip 文件的示例。 minizip 位于 zlib 发行版的 contrib 目录中,这意味着它是第三方贡献的代码。它不是 zlib 库的一部分。

请注意 gzip 不是 zip。 zlib 格式不是 zip。原始压缩数据不是 zip。这些都是不同的格式。原始 deflate 数据是 zip 格式允许的压缩格式之一,实际上是最常见的。 zlib 对于处理 zip 文件很有用,但它本身并不能做到这一点。 zlib 本身仅提供压缩和解压缩引擎以及 CRC 计算。

关于c++ - 使用 zlib 压缩目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18725424/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com