首页 文章

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

提问于
浏览
1

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

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

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

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

3 回答

  • 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

    zlib支持内存中的inflate()和deflate()函数 . 你可以从here阅读

  • 0

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

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

相关问题