您的位置:首页 > 编程语言 > Qt开发

Qt QuaZip 解压zip文件

2016-09-07 12:59 441 查看

起因

    由于工作中有需要解压网络上下载的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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: