Qt之QuaZIP(zip压缩/解压缩)
简述
QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库。适用于多种平台,利用它可以很方便的将单个或多个文件打包为zip文件,且打包后的zip文件可以通过其它工具打开。
Qt中提供了qCompress/qUncompress来进行文件的压缩与解压,但存在两个问题:
- 无法很好地压缩/解压缩文件夹。
- 只能将一个文件压缩为某种格式,压缩后的文件无法通过其它解压工具打开(如:7zip,或WinRAR),只能通过qUncompress解压读取,也就是说qCompress生成的压缩文件不包含普通压缩文件的一些头信息,导致无法解压。
QuaZIP类描述
| 类 | 描述 |
|---|---|
| JlCompress | 典型操作工具类 |
| QuaAdler32 | Adler32算法校验和 |
| QuaChecksum32 | 校验和接口 |
| QuaCrc32 | CRC32校验和 |
| QuaGzipFile | GZIP 文件操作 |
| QuaZIODevice | 压缩/解压 QIODevice |
| QuaZip | ZIP 文件 |
| QuaZipDir | ZIP文件内目录导航 |
| QuaZipFile | ZIP文件内的文件 |
| QuaZipFileInfo | ZIP压缩包内的文件信息 |
| QuaZipFilePrivate | QuaZip的接口 |
| QuaZipNewInfo | 被创建的文件信息 |
| QuaZipPrivate | QuaZIP内部类 |
使用
接口说明
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());
配置
在工程中将quazip.lib所在库目录、头文件所在的目录添加到工程中。
pro中添加:
LIBS += -L"D:/quazip/lib" -lquazip
INCLUDEPATH += D:/quazip/src
DEPENDPATH += D:/quazip/src
压缩/解压缩
#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();
}
更多参考
可以直接下载我编译好的库,里面包含源码及库文件。
Qt之QuaZIP(zip压缩/解压缩)的更多相关文章
- Qt之zip压缩/解压缩(QuaZIP)
摘要: 简述 QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库.适用于多种平台,利用它可以很方便的将单个或多个文件打包为zip文件,且打包后的zip文件可以通过其它 ...
- Qt中用QuaZip来压缩和解压缩文件
1.简介 QuaZIP是使用Qt,C++对ZLIB进行简单封装的用于压缩ZIP以及解压缩ZIP的开源库.如果你的Qt项目当中用到了压缩以及解压缩ZIP的话你可以考虑选择使用它. 官方主页:http:/ ...
- AntZipUtils【基于Ant的Zip压缩解压缩工具类】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 Android 压缩解压zip文件一般分为两种方式: 基于JDK的Zip压缩工具类 该版本存在问题:压缩时如果目录或文件名含有中文, ...
- zip:命令行下zip压缩/解压缩
在Ubuntu 18.04下验证,造冰箱的大熊猫@cnblogs 2019/6/6 序号 功能 命令行输入的命令 1 压缩单个文件 zip package.zip file 2 压缩多个文件 zip ...
- zip压缩解压缩 项目icsharpcode-SharpZipLib-e012155
大家可以到http://www.icsharpcode.net/opensource/sharpziplib/ 下载SharpZiplib的最新版本,支持Zip, GZip, BZip2 和Tar格式 ...
- Zip压缩/解压缩(文件夹)
#PS2.0压缩为.zip文件: $zip = "D:\audit_log\test.zip"New-Item $zip -ItemType file$shellApplicati ...
- centos8下gz,bz2,zip压缩解压缩
for gz 1.制作压缩包 [root@192 mnt]# tar czf mydir.tar.gz mydir1/ 2.解压gz 压缩包 [root@192 mnt]# tar xvf mydir ...
- zip压缩与解压缩示例
范例: zip命令可以用来将文件压缩成为常用的zip格式.unzip命令则用来解压缩zip文件. 1. 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip: # zip -r y ...
- 压缩 & 解压缩 命令汇总:tar、zip & unzip、
1. tar命令详解 格式:tar [-cxtzjvfpPN] 文件与目录 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五 ...
随机推荐
- JDBC 学习笔记(三)—— 数据源(数据库连接池):DBCP数据源、C3P0 数据源以及自定义数据源技术
本文目录: 1.应用程序直接获取连接的缺点(图解) 2.使用数据库连接池优化程序性能(图解) 3.可扩展增强某个类方法的功能的三种方式 4.自定 ...
- android 中使用回调方法(适用于自定义view传值到activity、adapter传值到activity)
如图所示: 每当listview中有选中的操作时都需要发消息给activity,用来实时改变真实需要支付的剩余金额. 代码暂不公开啦!公司项目!
- 关于拓扑排序(topologicalsort)
假设我们有一组任务要完成,并且有些任务要在其它任务完成之后才能开始,所以我们必须非常小心这些任务的执行顺序.如果这些任务的执行顺序足够简单的话,我们可以用链表来存储它们,这是一个很好的方案,让我们可以 ...
- 运用 DataContractSerializer 存储本地对象
public void Save(string filename,State state) { DataContractSerializer ds = new DataContractSerializ ...
- LoadRunner 11 安装及破解(转)
前提条件: 内存:2G,硬盘空闲空间10G,安装完成后实际只占不到2G 支持winXP SP3;32位与64位win7浏览器支持IE6-8,IE9,firefox3 若以前安装过LoadRunner ...
- DelayedOperationPurgatory之DelayedOperation pool
purgatory就是炼狱的意思. 当一个DelayedOperation需要被delay时,它就被放到DelayedOperationPurgatory,相当于进行一个等待池.上一篇blog提到过, ...
- POJ3461 Oulipo KMP算法
这个算法去年的这个时候就已经听过了,看毛片算法哈哈..不过理解它确实花了我很久的时间..以致于我一直很排斥字符串的学习,因为总觉得太难了,但是有些硬骨头还是要啃的,这个寒假就啃啃字符串还有一些别的东西 ...
- javascript中创建插入元素
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- 2010年山东省第一届ACM大学生程序设计竞赛 Balloons (BFS)
题意 : 找联通块的个数,Saya定义两个相连是 |xa-xb| + |ya-yb| ≤ 1 ,但是Kudo定义的相连是 |xa-xb|≤1 并且 |ya-yb|≤1.输出按照两种方式数的联通块的各数 ...
- SDUT1500 Message Flood
以前做过的用的字典树,可是貌似现在再用超内存....求解释... 问了LYN用的map函数做的,又去小小的学了map函数.... http://wenku.baidu.com/view/0b08cec ...