zlib c ++和解压缩文件

我已经开始使用zlib 1.2.5了,我没有看到从zip文件中提取的任何例程? 我读到了一个minizip应用程序,这是发行版的一部分。

这是应该怎么做的?

是的,它做得很好。 (但是,如果你不喜欢C代码,你应该看看有C ++和C#代码的7-zip SDK。)

  • 从zip存档中浏览unzip.h压缩文件的所有function都在: unzip.h
  • 压缩文件和将文件添加到zip存档的所有函数都在: zip.h

(查看contrib \ minizip \ unzip.h和contrib \ minizip \ zip.h )

例如解压缩:zip文件的unzOpen()函数返回一个unzFile

然后在此unzFile上使用unzGoToFirstFile()unzGoToNextFile()来浏览存档中的所有文件。

然后你用unzGetCurrentFileInfo()得到每个文件的文件信息,即它的大小,

你肯定应该在某个时刻调用unzOpenCurrentFile()

并使用fileinfo中的大小调用unzReadCurrentFile() ,检索已归档文件的二进制内容。

或者,你可以提供一个不透明的结构,以便使用你自己的i / o函数,但显然有一个默认的win32实现文件访问,所以你甚至不用担心。

PS:并且别忘了调用unzCloseCurrentFile()

来自: http ://www.zlib.net/zlib_faq.html#faq11:11。zlib可以处理.zip档案吗?

不是单独的,不是。 请参阅zlib发行版中的contrib / minizip目录。

那里没有教程,但minizip zip.c源代码完全适用于使用zlib的zip文件上的IO(因此可能是压缩和解压缩)。

仍然没有教程但是http://www.winimage.com/zLibDll/minizip.html提供了更多细节。

我已经在minizip周围构建了一个包装器,添加了我需要的一些function并使其更好用。 是否使用最新的c ++ 11并使用Visual Studio 2013开发(应该是可移植的,但我还没有在unix上测试过)

这里有完整的描述: https : //github.com/sebastiandev/zipper

你可以压缩整个文件夹,流,矢量等。另外一个很好的function是完全在内存中完成所有事情。