3

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

我找到并尝试了一些库来压缩一个 zip 文件,比如 zlib 和 minizip,但是它们都解压了一个存在于磁盘上的文件,而不是来自内存。

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

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

4

3 回答 3

3

看看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));
于 2012-05-28T09:14:58.550 回答
2

zlib 支持内存中的 inflate() 和 deflate() 函数。你可以从这里阅读如何

于 2012-05-28T08:45:55.143 回答
1

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

src = zip_source_buffer_create(data, size, 1, &error)
za = zip_open_from_source(src, 0, &error)
于 2018-03-29T02:48:28.643 回答