Qt QuaZip 解压zip文件

来源:互联网 发布:向着网络强国杨帆远航 编辑:程序博客网 时间:2024/05/16 02:14

起因

    由于工作中有需要解压网络上下载的zip文件,之前考虑到用zlib,但是发现zlib使用较为不便,后面网上了解到QuaZip对zlib进行了封装,使用更为简易。
    于是搜索QuaZip,附:官网http://quazip.sourceforge.net/。下载源码,记录下编译和使用规则。

编译

下载并解压后发现目录中有.pro文件和.sln文件,直接运行sln文件并不能正常编译,遂运行pro文件,并再quazip.pro中添加INCLUDEPATH += “D:/Qt/Qt5.7.0/5.7/msvc2013/include/QtZlib”
这里写图片描述
这里只需要编译quazip即可,如果要编译qztest,则同样在qztest.pro中添加如上INCLUDEPATH即可。
后面能够正常编译,但并未找到lib文件(好久不用qtcreater,不是很记得pro文件的配置,也懒得看帮助~~)。于是导入到vs中进行编译。直接导入pro文件新生成sln即可(不要用原先的sln,配置比较麻烦),于是编译生成对应的sln文件。

应用示例

运用相对还是比较简单的示例如下,代码比较简单,即在当前目录解压zip文件,一般都能看懂:

    QuaZip archive("xxx.zip");    if (!archive.open(QuaZip::mdUnzip)) {        return false;    }    QDir dir(giftDir);    for (bool f = archive.goToFirstFile(); f; f = archive.goToNextFile())    {        QString filePath = archive.getCurrentFileName();        QuaZipFile zFile(archive.getZipName(), filePath);        zFile.open(QIODevice::ReadOnly);        QByteArray ba = zFile.readAll();        zFile.close();        if (filePath.endsWith("/"))        {            dir.mkpath(filePath);        }        else        {            QFile dstFile(giftDir + filePath);            if (!dstFile.open(QIODevice::WriteOnly))                return false;            dstFile.write(ba);            dstFile.close();        }    }

附1,当时参考到的一个例子,写得很好,按照他的方法配置pro文件也可以达到生成需要的lib的需求:http://blog.csdn.net/tong5956/article/details/47183815
附2,对QuaZip的介绍,写得挺好的 http://blog.csdn.net/kfbyj/article/details/13888101

1 0