我正在编写一个服务器,它从客户端接收一个zip文件,然后解压缩该文件 . 当我收到zip文件时,我将其存储在内存中 .
我发现并尝试使用某个库来压缩zip文件,例如zlib和minizip,但是所有这些文件都解压缩存在于磁盘上的文件,而不是内存 .
我不想将文件临时保存到磁盘并提取它,它效率不高 .
如何从内存中解压缩文件?我在Windows上编写C和C.
看看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));
zlib支持内存中的inflate()和deflate()函数 . 你可以从here阅读
libzip(基于zlib)具有从内存中打开存档的功能 . 示例代码是on github .
src = zip_source_buffer_create(data, size, 1, &error) za = zip_open_from_source(src, 0, &error)
3 回答
看看libarchive它支持zip格式 .
在内存中提取存档的示例:
zlib支持内存中的inflate()和deflate()函数 . 你可以从here阅读
libzip(基于zlib)具有从内存中打开存档的功能 . 示例代码是on github .