2012-05-28 37 views
1

我正在写一个服务器,它从客户端接收一个zip文件,并解压缩该文件。 当我收到zip文件时,我将它存储到内存中。如何解压缩已经加载到C中的内存中的zip文件?

我发现并尝试了一些库来上传zip文件,比如zlib和minizip,但是所有这些文件都在磁盘上解压缩文件,而不是从内存中解压缩。

我不想将文件存储到磁盘中并进行解压缩,效率不高。

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

+0

请检查回答这个问题的StackOverflow:在内存中提取存档

例http://stackoverflow.com/questions/5303741/best-api-to-unzip-a-file-into -记忆。 –

+0

我不使用Qt,quazip似乎是Qt特有的。 – Celebi

回答

1

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

+4

但zlib不支持.zip格式。 – Celebi

+0

@Celebi:你是什么意思,它不支持.zip格式?它被创建来处理zip格式。如果不起作用,请检查标题。可能即使扩展名是.zip,实际使用的压缩算法也是lzma或别的。 – LeleDumbo

+2

@LeleDumbo zlib的FAQ表示它不处理.zip档案。 “请参阅zlib发行版中的目录contrib/minizip”。但minizip处理文件中的.zip文件,而不是内存。 – Celebi

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)); 
相关问题