日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Qt基于QuaZIP实现文件压缩/解压(Linux下)

發(fā)布時(shí)間:2023/12/8 linux 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt基于QuaZIP实现文件压缩/解压(Linux下) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Qt基于QuaZIP實(shí)現(xiàn)文件壓縮/解壓(Linux下)

  • 一、工具準(zhǔn)備
  • 二、編譯zlib
    • 1、下載zlib源碼
    • 2、配置
    • 3、編譯與安裝
  • 三、編譯QuaZIP
    • 1、下載QuaZIP源碼
    • 2、將zlib庫和頭文件加入QuaZIP工程
    • 3、使用Qt Creator進(jìn)行編譯
  • 四、調(diào)用QuaZIP實(shí)現(xiàn)壓縮/解壓

如有需要,歡迎查看《Qt基于QuaZIP實(shí)現(xiàn)文件壓縮/解壓(Win下)》文章。

QuaZIP是使用Qt/C++對ZLIB進(jìn)行簡單封裝的用于壓縮及解壓縮ZIP的開源庫。適用于多種平臺,利用它可以很方便的將單個(gè)或多個(gè)文件打包為zip文件,且打包后的zip文件可以通過其它工具打開。

Qt中提供了qCompress/qUncompress來進(jìn)行文件的壓縮與解壓,但存在兩個(gè)問題:

  • 無法很好地壓縮/解壓縮文件夾。
  • 只能將一個(gè)文件壓縮為某種格式,壓縮后的文件無法通過其它解壓工具打開(如:7zip,或WinRAR),只能通過qUncompress解壓讀取,也就是說qCompress生成的壓縮文件不包含普通壓縮文件的一些頭信息,導(dǎo)致無法解壓。

一、工具準(zhǔn)備

  • gcc
  • Qt Creator Linux版

由于QuaZIP是基于zlib實(shí)現(xiàn)的,故需要先編譯出zlib庫,以供QuaZIP編譯鏈接。

二、編譯zlib

1、下載zlib源碼

進(jìn)入http://www.zlib.net/,下載zlib源碼包。

2、配置

解壓源碼

unzip zlib1211.zip

進(jìn)入源碼目錄

cd zlib-1.2.11

配置編譯器

export CC=gcc

配置安裝路徑

./configure --prefix=../x86

安裝目錄設(shè)定為上一級的x86目錄下。

3、編譯與安裝

編譯

make

安裝

make install

安裝到x86目錄后,該目錄下有相應(yīng)頭文件和庫文件,如下所示:

三、編譯QuaZIP

1、下載QuaZIP源碼

進(jìn)入http://sourceforge.net/projects/quazip/,下載源碼包。

提示:

本版本為舊版0.7.3。最新版為1.1,地址變更到了:https://github.com/stachenov/quazip,且編譯方法也發(fā)生了變化,以下編譯方法對新版本無效。

2、將zlib庫和頭文件加入QuaZIP工程

解壓該源碼,然后

  • 拷貝zlib的頭文件zconf.h、zlib.h至quazip-0.7.3/quazip/zlib/include下;
  • 拷貝libz.so、libz.so.1、libz.so.1.2.11至quazip-0.7.3/quazip/zlib/lib下。

如下:

在quazip-0.7.3/quazip/quazip.pro文件中,unix下添加:

INCLUDEPATH += $$PWD/zlib/include LIBS += -L$$PWD/zlib/lib -lz

如下:

3、使用Qt Creator進(jìn)行編譯

使用Qt Creator打開quazip-0.7.3/quazip.pro文件,并編譯quazip庫工程。

最后生成libquazip.so.1.0.0動(dòng)態(tài)庫,以及l(fā)ibquazip.so、libquazip.so.1、libquazip.so.1.0三個(gè)軟鏈接。

四、調(diào)用QuaZIP實(shí)現(xiàn)壓縮/解壓

我們建立一個(gè)Qt測試工程quazipTest,用于調(diào)用QuaZIP庫。

首先,所需頭文件和庫,有QuaZIP和zlib兩部分:

  • 拷貝quazip-0.7.3/quazip下所有頭文件,和zlib的zlib.h、zconf.h,至quazipTest/quazip/include;
  • 拷貝zlib的庫libz.so、libz.so.1、libz.so.1.2.11,quazip的庫libquazip.so、libquazip.so.1、libquazip.so.1.0、libquazip.so.1.0.0至quazipTest/quazip/lib/linux。

如下:

然后,在quazipTest.pro文件中,添加如下內(nèi)容:

unix {INCLUDEPATH += $$PWD/quazip/includeLIBS += -L$$PWD/quazip/lib/linux -lquazip }

測試代碼:

#include <QCoreApplication> #include "JlCompress.h"int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);// 將程序當(dāng)前目錄進(jìn)行壓縮,壓縮文件為myTest.zipJlCompress::compressDir("D:/myTest.zip", "./");// 將myTest.zip解壓到D:/myTest目錄下JlCompress::extractDir("D:/myTest.zip", "D:/myTest");return a.exec(); }

運(yùn)行時(shí),依賴zlib的庫libz.so、libz.so.1、libz.so.1.2.11,quazip的庫libquazip.so、libquazip.so.1、libquazip.so.1.0、libquazip.so.1.0.0。

執(zhí)行結(jié)果如下:

在JlCompress.h中,封裝了很多方法,支持對單文件、多文件、目錄等進(jìn)行壓縮,可以根據(jù)實(shí)際選擇使用。

本文涉及工程代碼:

https://gitee.com/bailiyang/cdemo/tree/master/Qt/59quazipTest/quazipTest



若對你有幫助,歡迎點(diǎn)贊、收藏、評論,你的支持就是我的最大動(dòng)力!!!

同時(shí),阿超為大家準(zhǔn)備了豐富的學(xué)習(xí)資料,歡迎關(guān)注公眾號“超哥學(xué)編程”,即可領(lǐng)取。

總結(jié)

以上是生活随笔為你收集整理的Qt基于QuaZIP实现文件压缩/解压(Linux下)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。