Qt之zip压缩/解压缩(QuaZIP)
摘要: 简述 QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库。适用于多种平台,利用它可以很方便的将单个或多个文件打包为zip文件,且打包后的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之zip压缩/解压缩(QuaZIP)的更多相关文章
- Qt之QuaZIP(zip压缩/解压缩)
简述 QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库.适用于多种平台,利用它可以很方便的将单个或多个文件打包为zip文件,且打包后的zip文件可以通过其它工具打开 ...
- Qt 之 ZIP开源库 QuaZIP
2013-10-31 21:46 10856人阅读 评论(0) 收藏 举报 分类: Qt(12) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 一.简介 ...
- 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格式 ...
- Qt用Zip压缩文件夹的一些坑
环境: QT3.3.8 vs2005 QDir dir("/home/Blinux/html"); if ( !dir.exists() ) { //目录不存在 } QString ...
- 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 ...
随机推荐
- oracle 实现mysql find_set_in函数
create or replace FUNCTION F_FIND_IN_SET(piv_str1 varchar2, piv_str2 varchar2, p_sep varchar2 := ',' ...
- Spring Boot 2.2.0 正式发布,支持 JDK 13!
Java技术栈 www.javastack.cn 优秀的Java技术公众号 推荐阅读: Spring Boot 2.2.0 正式发布了,可从 repo.spring.io 或是 Maven Centr ...
- Java编程思想学习录(连载之:内部类)
内部类基本概念 可将一个类的定义置于另一个类定义的内部 内部类允许将逻辑相关的类组织在一起,并控制位于内部的类的可见性 甚至可将内部类定义于一个方法或者任意作用域内! 当然,内部类 ≠ 组合 内部类拥 ...
- mysql低版本升级到5.7
升级步骤 #安全的停止数据库的运行 /etc/init.d/mysql.server stop # 解压mysql tar包 tar zxf mysql-5.7.28-linux-glibc2.12- ...
- linux-memcache安装及memcached memcache扩展
linux memcached安装yum -y install libevent libevent-deve yum list memcached yum -y install memcached m ...
- 【已解决】Error running 'xxx项目' Command line is too long(idea版)
[错误] Error running 'xxx项目': Command line is too long. Shorten command line for xxx or also for Sprin ...
- WindowsForms使用Telerik Reporting
新建一个WindowsForms窗体项目 然后拖动ReportViewer这个控件到WindowsForms的窗体中 如上图所示,用来呈现报表的控件,这个控件可以打印报表,转换报表这类的功能 接下来我 ...
- 007-流程控制 if 语句
流程控制 if 语句 if [ 条件判断式 ] ; then 程序 fi if [ 条件判断式 ] then 程序 fi 脚本示例: [root@zabbix lianxi]# .sh #!/bin/ ...
- Linux 正在尝试其他镜像
Linux 正在尝试其他镜像 发生情景: 在windows7系统,安装了虚拟机Oracle VM VirtualBox,使用的CentOS7, 在使用yum的使用,一直提醒"正在尝试其他镜 ...
- 客户端远程连接docker容器中的mysql 报1251错误
1.启动容器: [root@localhost ~]# docker run -d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql2.进入容器: [r ...