QuaZIP是使用Qt,C++对ZLIB进行简单封装的用于压缩ZIP以及解压缩ZIP的开源库。如果你的Qt项目当中用到了压缩以及解压缩ZIP的话你可以考虑选择使用它。
地址:官方主页
QuaZIP是基于ZLIB库的,所以编译之前必须编译完ZLIB或者导入ZLIB的LIB和头文件。
默认QuaZIP是编译为DLL或者SO文件的。如果你想直接使用源代码的话你可以把所有导出类的标识符QUAZIP_EXPORT注释了,就可以编译通过
而不会生成DLL或者SO文件。
下面你就可以按照你所使用的平台和方式编译QuaZIP。
bool Ziper::Extract(const QString& in_file_path, const QString& out_file_path) { QuaZip archive(in_file_path); if (!archive.open(QuaZip::mdUnzip)) return false; QString path = out_file_path; if (!path.endsWith("/") && !out_file_path.endsWith("\\")) path += "/"; QDir dir(out_file_path); if (!dir.exists()) dir.mkpath(out_file_path); 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(path + filePath); if (!dstFile.open(QIODevice::WriteOnly)) return false; dstFile.write(ba); dstFile.close(); } } return true; }
其他问题可以去官方网站看看,他们给出了很多测试用例