Qt之QuaZIP(zip压缩/解压缩)

来源:互联网 发布:比亚迪和特斯拉知乎 编辑:程序博客网 时间:2024/06/05 05:14

简述

QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库。适用于多种平台,利用它可以很方便的将单个或多个文件打包为zip文件,且打包后的zip文件可以通过其它工具打开。

Qt中提供了qCompress/qUncompress来进行文件的压缩与解压,但存在两个问题:

  1. 无法很好地压缩/解压缩文件夹。
  2. 只能将一个文件压缩为某种格式,压缩后的文件无法通过其它解压工具打开(如:7zip,或WinRAR),只能通过qUncompress解压读取,也就是说qCompress生成的压缩文件不包含普通压缩文件的一些头信息,导致无法解压。

  • 简述
  • QuaZIP类描述
  • 使用
    • 接口说明
    • 配置
    • 压缩解压缩
  • 更多参考

QuaZIP类描述

类描述JlCompress典型操作工具类QuaAdler32Adler32算法校验和QuaChecksum32校验和接口QuaCrc32CRC32校验和QuaGzipFileGZIP文件操作QuaZIODevice压缩/解压QIODeviceQuaZipZIP文件QuaZipDirZIP文件内目录导航QuaZipFileZIP文件内的文件QuaZipFileInfoZIP压缩包内的文件信息QuaZipFilePrivateQuaZip的接口QuaZipNewInfo被创建的文件信息QuaZipPrivateQuaZIP内部类

使用

接口说明

QuaZip中的JlCompress类用来压缩和解压缩文件

/**    压缩文件夹    参数一fileCompressed:压缩后的文件    参数二dir:待压缩的目录    参数三recursive:是否递归**/static bool compressDir(QString fileCompressed, QString dir = QString(), bool recursive = true);/**    解压缩文件夹     参数一fileCompressed:待解压缩的文件    参数二fileCompressed:解压缩存放的目录**/static QStringList extractDir(QString fileCompressed, QString dir = QString());
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

配置

在工程中将quazip.lib所在库目录、头文件所在的目录添加到工程中。

pro中添加:

LIBS += -L"D:/quazip/lib" -lquazipINCLUDEPATH += D:/quazip/srcDEPENDPATH += D:/quazip/src
  • 1
  • 2
  • 3

压缩/解压缩

#include <QApplication>#include "JlCompress.h"int main(int argc, char **argv){    QApplication app(argc,argv);    // 压缩文件夹    JlCompress::compressDir("F:\\QuaZip.zip", "F:\\QuaZip");    // 解压缩文件夹    JlCompress::extractDir("F:\\QuaZip.zip", "F:\\ExtractQuaZip");    return app.exec();}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

更多参考

可以直接下载我编译好的库,里面包含源码及库文件。

  • 官方主页
  • souceforge下载
  • QuaZIP已编译(含源码及库文件)