开发者

zlib c++ and extracting files

I have started to use zlib 1.2.5 and I do not see any routine to extrac开发者_StackOverflowt from a zip file? I read about a minizip application, part of the distribution.

Is that how it is supposed to be done?


Yes, it does it well. (But if ever you don't like C code, you should look at 7-zip SDK that have code in C++ and C#.)

  • All the functions to browse and uncompress the files from a zip archive are in unzip.h
  • All the functions to compress and add files to a zip archive are in zip.h

(look at contrib\minizip\unzip.h and contrib\minizip\zip.h)

For example, decompressing: the unzOpen() functions of your zip file returns a unzFile

then use unzGoToFirstFile() and unzGoToNextFile() on this unzFile to browse through all files in the archive.

then you get the file info for each file with unzGetCurrentFileInfo(), namely for its size,

surely you should call unzOpenCurrentFile() at some moment.

and call unzReadCurrentFile() using the size from file info, retrieving the binary content of the archived file.

optionally, there is an opaque structure you can provide so as to use your own i/o function, but obviously, there is a default win32 implementation for file access, so you could even not worry about that.

PS: and dont forget to call unzCloseCurrentFile().


From: http://www.zlib.net/zlib_faq.html#faq11 : 11. Can zlib handle .zip archives?

Not by itself, no. See the directory contrib/minizip in the zlib distribution.

There's not a tutorial there but the minizip zip.c source is exactly for IO (so presumably compression and decompression) on zip files using zlib.

And still no tutorial BUT http://www.winimage.com/zLibDll/minizip.html gives more details.


I have built a wrapper around minizip adding some features that I needed and making it nicer to use it. Is does use the latest c++11 and is developed using Visual Studio 2013 (should be portable, but I haven't tested it on unix)

There's a full description here: https://github.com/sebastiandev/zipper

you can zip entire folders, streams, vectors, etc. Also a nice feature is doing everything entirely in memory.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜