Quazip在Linux中的使用
Quazip在Linux中的使用
Quazip是一个用于压缩和解压缩的库,常用于Qt中,通过该库可以较为方便的压缩和解压缩zip等文件.
前言:为什么要使用Quazip
因为Qt库中并没有对压缩文件(zip/rar)高度支持,需要依赖第三方库.
步骤
1.编译
从Quazip的官网下载0.7.3版本的压缩包之后,解压到一个空目录中.
可以看到目录中同时存在.sln .pro以及CMakeList.txt文件,说明分别可以使用VS,Qt以及Cmake来进行编译.
我在Ubuntu20.04环境下使用Qt5.9.1来编译Quazip
选择qmake生成工程,如果中途产生错误,请检查你的Qt库中是否有zlib,如果没有,需要自行编译.
Qt4以上的版本一般会自带zlib库.
可以看到在同级目录下,产生了一个工程目录,该目录下有一个Makefile文件,可以通过make来进行编译.
在生成的工程的根目录执行make.
如果你的Ubuntu中不存在make,请安装
sudo apt install make
如果在quazip文件夹下生成了动态库,说明得到了想要的文件.
编译完成后,如果要使用quazip,我的建议是将quazip安装到系统库中,这样子就不需要再指定LD_LIBRARY_PATH和INCLUDE_PATH了.
我们回到生成的工程根目录,执行make install.
如果中途没有产生错误的话,会在系统根目录include文件夹和usr/lib中分别添加quazip的头文件和动态库文件.
但是如果你的系统的include或lib文件夹并不在根目录中,那么需要手动将其移到对应的include文件夹中,以免产生混乱.
然后就可以在Qt中导入quazip库了.
2.添加到Qt项目中
如果通过make install将quazip安装到系统,那么使用起来会非常简单.只需要在你的工程.pro文件中引用库即可.
LIBS += -lquazip
如果不打算将quazip安装到系统,则需要加入库文件所在路径并引用.
LIBS += -L$(你整理的quazip的lib路径) -lquazip
3.在Qt项目中使用
通过上面两个步骤后,已经可以在Qt中使用quazip了.
#include <quazip/JlCompress.h>
这个头文件中包含了一些快速进行解压缩的静态函数
/**
解压单个文件
\param 被压缩的文件的路径
\param 解压缩的单个文件的存放路径
\return 成功返回真,失败返回假
*/
static bool compressFile(QString fileCompressed, QString file);
/**
解压多个文件
\param 被压缩的文件的路径
\param 解压缩的多个文件的存放路径
\return 成功返回真,失败返回假
*/
static bool compressFiles(QString fileCompressed, QStringList files);
/**
解压整个文件夹,不会解压被隐藏的文件,详情请见下一个函数
\param 被压缩的文件的路径
\param 解压缩的文件夹的存放路径
\param 为真时,会在同级目录创建同名的文件夹再解压到文件夹中,为假时,直接解压到同级目录.
\return 成功返回真,失败返回假
*/
static bool compressDir(QString fileCompressed, QString dir = QString(), bool recursive = true);
/*
解压整个文件夹
\param 被压缩的文件的路径
\param 查找要被压缩的在压缩包里的文件的关键字
\param 为真时,会在同级目录创建一个目标文件夹同名的文件夹再解压到文件夹中,为假时,直接解压到同级目录.
\param 可以通过dir参数过滤符合的文件夹,例如QDir::AllDirs|%QDir::NoDotAndDotDot,如果使用QDir::Files,那么也可以匹配文件.
\return 成功返回真,失败返回假
*/
static bool compressDir(QString fileCompressed, QString dir,bool recursive, QDir::Filters filters);
以上是quazip库的快速用法,如果需要解压一些比较复杂的压缩包,比如带有密码的和有隐藏文件的压缩包,就需要自己解压了.
#include <quazip/quazip.h>
#include <quazip/quazipfile.h>
这是两个用quazip库解压复杂压缩文件一般会用到的库.
未完待续