我有一个C++应用程序,需要使用标准压缩格式来压缩目录。我考虑使用zip格式。因此,zlib是显而易见的选择。
我的问题在于构建字典,即使用zlib将包含一些文件的目录压缩成标准的zip文件。我已经了解到zlib可以实现这个功能,但我不知道如何操作。我查看了minzip代码,它似乎使用gzip。我可以构建自己的格式,但我希望能够使用7z打开这些文件进行调试(以防万一)。
在zlib中应该使用什么来压缩目录?
编辑:在minzip中,我使用minzip将1个文件压缩为其gz版本,而不是zip,但对我来说没问题。(我将在世界各地的各种编译器上使用它--在客户端平台出现问题时,使用标准格式更容易)
此外,在main函数中有以下代码。它循环遍历文件列表并将其写入输出。但是存档中的文件位置信息在哪里?
我的问题在于构建字典,即使用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
来完成这项工作不是更简单、更健壮的方法吗?有什么好的理由吗? - Jonathan Lefflercontrib
文件夹中有一个minizip
。 - Oleg Pyzhcov