如何在C中解压缩已经加载到内存中的zip文件?

时间:2012-05-28 08:40:24

标签: c++ c zip unzip

我正在编写一个服务器,它从客户端接收一个zip文件,然后解压缩该文件。 当我收到zip文件时,我将其存储在内存中。

我发现并尝试使用某个库来上传zip文件,例如zlib和minizip,但是所有这些文件都解压缩了磁盘上的文件,而不是内存。

我不想将文件临时保存到磁盘中并提取它,效率不高。

如何从内存中解压缩文件? 我在Windows上编写C和C ++。

3 个答案:

答案 0 :(得分:2)

看看libarchive 它支持zip格式。

在内存中提取存档的示例:

struct archive *a = archive_read_new();
archive_read_support_compression_gzip(a);
archive_read_support_format_tar(a);
r = archive_read_open_memory(a, buff, sizeof(buff));

答案 1 :(得分:1)

zlib支持内存中的inflate()和deflate()函数。您可以阅读here

的内容

答案 2 :(得分:0)

libzip(基于zlib)具有从内存中打开存档的功能。示例代码为on github

src = zip_source_buffer_create(data, size, 1, &error)
za = zip_open_from_source(src, 0, &error)