如何在linux平台下使用C++语言实现多文件的压缩解压缩(使用zlib依赖库)必重谢!
发布网友
发布时间:2022-04-22 09:33
我来回答
共1个回答
热心网友
时间:2023-10-27 22:41
由于Unix系一贯坚持功能分离,所以通常是先tar再gzip来完成多文件一次压缩。
开发中一般是借助zlib-X.X.X.tar.gz\zlib-X.X.X.tar\zlib-X.X.X\contrib\minizip\实例中的接口:
ZLib 可能并不是一个针对 ZIP 文件的库,它只是一个针对 gzip 以及 deflate 算法的库。它提供了一个叫做 minizip
(contrib\minizip) 例子来给出操作 ZIP 文件的方法。下文将从 ZLib 出发,归结出两个傻瓜接口:BOOL ZipCompress(LPCTSTR lpszSourceFiles, LPCTSTR lpszDestFile);
BOOL ZipExtract(LPCTSTR lpszSourceFile, LPCTSTR lpszDestFolder);
要引入的源文件
ZLib 主目录下的代码,除 minigzip.c、example.c 外;
contrib\minizip 下的代码,除 minizip.c、miniunz.c 外。
相关 API
虽
然 minizip 更像是个例子,但是除去其主程序 minizip.c 和 miniunz.c 后,剩下的部分我们可以看作是 ZLib
的一个上层库,它封装了与 ZIP 文件格式相关的操作。而 minizip.c 和 miniunz.c
就是我们要改写的——把它从命令行程序改为上述傻瓜接口。minizip.c 和 miniunz.c 中用到的 API 主要有:
压缩相关:
zipOpen
zipClose
zipOpenNewFileInZip
zipCloseFileInZip
zipWriteInFileInZip
解压相关:
unzOpen
unzClose
unzGetGlobalInfo
unzGoToNextFile
unzGetCurrentFileInfo
unzOpenCurrentFile
unzCloseCurrentFile
unzReadCurrentFile
想必看到这些名字都能猜到怎么用了吧。好的接口果然能带给人愉悦的。minizip 中的这些函数有的是带“”的有的是不带的,有的还有“2”、“3”、“4”版本。这里一律用带 的,不带“2”、“3”、“4”的。
来源参考:http://www.cppblog.com/Streamlet/archive/2010/09/22/127368.html
追问这个内容我也有看过,但是到自己使用的时候感觉有一点儿乱,有没有一个小的demo呢