2013-10-31 21:46 10856人阅读 评论(0) 收藏 举报
 分类:
Qt(12) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

 

目录(?)[+]

 

一。简介

       QuaZIP是使用Qt,C++对ZLIB进行简单封装的用于压缩ZIP以及解压缩ZIP的开源库。
如果你的Qt项目当中用到了压缩以及解压缩ZIP的话你可以考虑选择使用它。
      地址:官方主页

二。编译

          QuaZIP目前支持以下几个平台:
  • linux-g++ (Ubuntu 11.10, Qt 4.7.4)
  • freebsd-g++ (Qt 4.0.0
  • hpux-acc (HP-UX 11.11)
  • hpux-g++ (HP-UX 11.11)
  • win32-g++ (MinGW)
  • win32-msvc2010 (MS VS 2010 Express, Qt 4.8.4)
  • win32-msvc2010 (Qt Creator, Qt 5.0.1)
  • some Symbian version, reportedly
      QuaZIP是基于ZLIB库的,所以编译之前必须编译完ZLIB或者导入ZLIB的LIB和头文件。
 
      默认QuaZIP是编译为DLL或者SO文件的。如果你想直接使用源代码的话你可以把所有导出类的标识符QUAZIP_EXPORT注释了,就可以编译通过
而不会生成DLL或者SO文件。

        下面你就可以按照你所使用的平台和方式编译QuaZIP。

 

三。使用

QuaZIP共有以下几个类
JlCompress 典型操作工具类
QuaAdler32 Adler32 算法校验和
QuaChecksum32 校验和接口
QuaCrc32 CRC32 校验和
QuaGzipFile GZIP 文件操作
QuaZIODevice  压缩/解压 QIODevice
QuaZip ZIP 文件
QuaZipDir ZIP文件内目录导航
QuaZipFile ZIP文件内的文件
QuaZipFileInfo ZIP压缩包内的文件信息
QuaZipFilePrivate QuaZip的接口
QuaZipNewInfo 被创建的文件信息
QuaZipPrivate QuaZIP内部类

下面给出一个自己用的解压缩ZIP的例子

  1. bool Ziper::Extract(const QString& in_file_path, const QString& out_file_path)
  2. {
  3. QuaZip archive(in_file_path);
  4. if (!archive.open(QuaZip::mdUnzip))
  5. return false;
  6. QString path = out_file_path;
  7. if (!path.endsWith("/") && !out_file_path.endsWith("\\"))
  8. path += "/";
  9. QDir dir(out_file_path);
  10. if (!dir.exists())
  11. dir.mkpath(out_file_path);
  12. for( bool f = archive.goToFirstFile(); f; f = archive.goToNextFile() )
  13. {
  14. QString filePath = archive.getCurrentFileName();
  15. QuaZipFile zFile(archive.getZipName(), filePath);
  16. zFile.open(QIODevice::ReadOnly );
  17. QByteArray ba = zFile.readAll();
  18. zFile.close();
  19. if (filePath.endsWith("/"))
  20. {
  21. dir.mkpath(filePath);
  22. }
  23. else
  24. {
  25. QFile dstFile(path + filePath);
  26. if (!dstFile.open(QIODevice::WriteOnly))
  27. return false;
  28. dstFile.write(ba);
  29. dstFile.close();
  30. }
  31. }
  32. return true;
  33. }

官方的测试用例也给出了很详细的使用方法。可以看下。未完待续。。。

Qt 之 ZIP开源库 QuaZIP的更多相关文章

  1. Qt之zip压缩/解压缩(QuaZIP)

    摘要: 简述 QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库.适用于多种平台,利用它可以很方便的将单个或多个文件打包为zip文件,且打包后的zip文件可以通过其它 ...

  2. C/C++ 开源库及示例代码

    C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...

  3. 站在巨人的肩膀上,C++开源库大全

    程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++ Standard Library:是一系列 ...

  4. GitHub C 和 C++ 开源库的清单(含示例代码)

    内容包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++标准库,包括了STL容器,算法和函数等. C++ Standard Library:是一系列类 ...

  5. C++开源库大全(转)

    程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++ Standard Library:是一系列 ...

  6. C++开源库大全

        标准库 C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分. Standard Template Library:标准模板库 ...

  7. libCURL开源库在VS2010环境下编译安装,配置详解

    libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...

  8. 【转】Qt下使用glut库

    ps:这个说的很明白,尤其是win10环境下用mingw环境时编程时碰到的问题, 1.加 windows.h 2.在.pro 添加libs     博文地址:Qt下使用glut库   本人使用的环境 ...

  9. 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发

    [原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文  http: ...

随机推荐

  1. Maven 项目中的groupId和artifactId

    maven进行项目管理,如果我们要将项目加入到maven到本地仓库中,则需要对项目进行唯一性标示,而groupId和artifactId就起到这样对作用. groupId为项目组织对唯一标识符,可以理 ...

  2. Apache与Tomcat联系及区别??

    Apache与Tomcat都是Apache开源组织开发的用于处理HTTP服务的项目,两者都是免费的,都可以做为独立的Web服务器运行.Apache是Web服务器而Tomcat是Java应用服务器. A ...

  3. bzoj4103 [Thu Summer Camp 2015]异或运算(可持久化trie)

    内存限制:512 MiB 时间限制:1000 ms 题目描述 给定长度为n的数列X={x1,x2,...,xn}和长度为m的数列Y={y1,y2,...,ym},令矩阵A中第i行第j列的值Aij=xi ...

  4. java流stream中的collect()方法详解

    public class StreamTest { /** * stream.collect() 的本质由三个参数构成, * 1. Supplier 生产者, 返回最终结果 * 2. BiConsum ...

  5. JS 页面跳转,参数的传递

    当我们通过location.replace()进行页面的跳转时,我们想进行参数的传递,当时学习的时候,以前在网上找过获取方法,已经忘记出处在哪里了.获取方法大概是这样的: 1.将参数通过拼接的方式拼接 ...

  6. Spring基础08——使用p命名空间

    1.使用p命名空间 为了简化xml配置,越来越多的xml文件采用属性而非子元素配置信息,Spring从2.5版本开始引入了一个新的p命名空间,可以通过<bean>元素属性的方式配置Bean ...

  7. MongoDB入门_相关网站

    几个重要的网站 1.MongoDB官网:https://www.mongodb.org 2.MongoDB的国内官网https://www.mongoing.com 3.MongoDB的中文文档htt ...

  8. 洛谷P1879 [USACO06NOV]玉米田Corn Fields (状态压缩DP)

    题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...

  9. gperftools尝试

    最近在找windows下比较好用的函数时间统计的库,听同事说gperftools是跨平台的,就下载下来尝试了一把.发现它确实实现了windows上可以调用的dll库文件(tcmalloc_minima ...

  10. spring security基本知识(二) 自定义认证

    配置自定义的用户存储 我们在 SecurityConfig 的配置类中 重写了 configure(AuthenticationManagerBuilder auth) 方法,我们可以通过 Authe ...