Qt 之 ZIP开源库 QuaZIP

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的例子

[cpp] view plain copy

print?

  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. }

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

时间: 2024-11-01 11:05:22

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

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

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

C++开源库大全(转)

程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分. Standard Template Library:标准模板库 C POSIX library : POSIX系统的C标准库规范 ISO C++ Standards Committee :C++标准委员会 框架 C++通用框架和库

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

程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分. Standard Template Library:标准模板库 C POSIX library : POSIX系统的C标准库规范 ISO C++ Standards Committee :C++标准委员会 框架 C++通用框架和库

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

C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1.3 环形缓冲 2.1.4 多维数组 2.1.5 图 2.2 对容器的操作 2.3 字符串处理 2.3.1 字符集 2.3.2 字符串格式化 2.3.3 正则表达式 2.3.4 (其它) 2.4 内存相关 2.4.1 智能指针 2.4.2 内存池 2.5 时间 & 日期 2.6 编码 & 解码

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

[转]http://www.tuicool.com/articles/jyA3MrU Android开源库 自己一直很喜欢Android开发,就如博客签名一样, 我是程序猿,我为自己代言 . 在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者,而且我会 不定期的更新 这篇文章. Android下的优秀开发库数不胜数,在本文中,我列举的多是开发流程中最常用的一些.如果你还想了解更多的Android开源库,可以关注我的博客,每一个库都是我认真查看或者编译运行

C++开源库,欢迎补充

C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年.因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用.当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被 严重地增强了.主力原因就是开源的软件.基础软件(比如并发原生支持,比如Android必定要推出原生的SDK).各种跨平台应用的出现. 开源C++库必须具有以下特点:必须是成熟的产品.跨平台的产品.相对通用的库

ios开发值AFNetworking开源库的使用

ios开发之AFNetworking开源库的使用 1.简介 常见的处理网络请求的方式 (1)NSURLConnection  (2)ASIHttpRequest  (3)AFNetworking  (4)MKNetworkKit (2)配置和使用 库文件拖入工程中, 包含头文件 #import "AFNetworking.h" AFNetworking使用的例子 AFNetworkingUseDemo.xcodeproj.zip

Android开源库

http://blog.csdn.net/xiaanming/article/details/9470223 一.兼容类库 ActionBarSherlock : Action Bar是Android 3.0后才开始支持的,ActionBarSherlock是让Action Bar功能支持2.X后的所有平台,而且他会自动的判断是调用原生Action Bar还是使用扩展ActionBar.在我的小熊词典里有用到这个库,而且很多非常知名的App也在使用这个库.GitHub Official Acti

Android之史上最全最简单最有用的第三方开源库收集整理

Android开源库 自己一直很喜欢Android开发,就如博客签名一样, 我是程序猿,我为自己代言 . 在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者,而且我会 不定期的更新 这篇文章. Android下的优秀开发库数不胜数,在本文中,我列举的多是开发流程中最常用的一些.如果你还想了解更多的Android开源库,可以关注我的博客,每一个库都是我认真查看或者编译运行的,希望对你产生帮助. 原文: http://blog.csdn.net/caoyou