Qt使用QuaZip對檔案進行壓縮解壓操作

2021-08-09 00:12:26 字數 3378 閱讀 3759

八月份快要過去了,突然想到我還沒有寫一篇日誌呢,想一想這乙個月我並沒有做開發以外的事情,三十天來還是嘗試並且解決了不少技術上的問題的。所以這次我打算將其中一些作為日誌分享出來。

前幾天正在討論使用打包工具的問題,待選的方案是7z和zip。於是拿了qlib7z、qt7z還有quazip來進行測試,後面發現,使用quazip這個方案實在是很方便,於是就將使用quazip的過程記錄一下。大家可能看過別人有關介紹quazip的部落格,我這篇沒有參考其它人的寫法,完全是來自官方測試專案。

[cpp]

view plain

copy

# quazip.pri  

quazip_include_path= e:\qtreference\quazip-0.7.1    

includepath+= $$quazip_include_path/quazip    

defines+= quazip_build    

libs+= -lz    

headers+= \    

$$quazip_include_path/quazip/crypt.h \    

$$quazip_include_path/quazip/ioapi.h \    

$$quazip_include_path/quazip/jlcompress.h \    

$$quazip_include_path/quazip/quaadler32.h \    

$$quazip_include_path/quazip/quachecksum32.h \    

$$quazip_include_path/quazip/quacrc32.h\    

$$quazip_include_path/quazip/quagzipfile.h \    

$$quazip_include_path/quazip/quaziodevice.h \    

$$quazip_include_path/quazip/quazipdir.h \    

$$quazip_include_path/quazip/quazipfile.h \    

$$quazip_include_path/quazip/quazipfileinfo.h\    

$$quazip_include_path/quazip/quazip_global.h \    

$$quazip_include_path/quazip/quazip.h \    

$$quazip_include_path/quazip/quazipnewinfo.h \    

$$quazip_include_path/quazip/unzip.h \    

$$quazip_include_path/quazip/zip.h    

sources+= $$quazip_include_path/quazip/qioapi.cpp \    

$$quazip_include_path/quazip/jlcompress.cpp \    

$$quazip_include_path/quazip/quaadler32.cpp \    

$$quazip_include_path/quazip/quacrc32.cpp \    

$$quazip_include_path/quazip/quagzipfile.cpp \    

$$quazip_include_path/quazip/quaziodevice.cpp \    

$$quazip_include_path/quazip/quazip.cpp \    

$$quazip_include_path/quazip/quazipdir.cpp \    

$$quazip_include_path/quazip/quazipfile.cpp\    

$$quazip_include_path/quazip/quazipfileinfo.cpp \    

$$quazip_include_path/quazip/quazipnewinfo.cpp \    

$$quazip_include_path/quazip/unzip.c\    

$$quazip_include_path/quazip/zip.c   

使用的時候只需要更改quazip_include_path變數的值就好了。然後再專案pro檔案中新增這樣一行:

[cpp]

view plain

copy

include( quazip.pri )    

使用quazip也是非常非常的簡單。它的乙個特點是將zip內檔案的讀寫操作封裝成qiodevice的乙個子類,這樣可以使用我們常用的檔案讀寫方法來對其操作了。

下面是乙個簡單的將乙個字串陣列寫入壓縮檔案的**:

[cpp]

view plain

copy

const

qstring& zipname( 

"e:/archive.zip"

);    

quazip zip( zipname );    

if( !zip.open( quazip::mdcreate ) )    

qstringlist data;    

);    

);    

);    

);    

foreach ( const

qstring& str, data )    

zip.close( );    

解壓操作和壓縮操作相反,也是先構建quazip再構建quazipfile,當然也可以一步到位,直接使用quazipfile進行解壓。下面的**目的是從「archive.zip」檔案中解壓「聊天.txt」文字檔案,解壓密碼是「63636361」。

[cpp]

view plain

copy

const

qstring& zipname( 

"e:/archive.zip"

);    

const

qstring& filename( 

"聊天.txt"

);    

quazipfile file( zipname, filename );    

if( file.open( qiodevice::readonly,    

// 開啟模式  

q_nullptr,              // 壓縮方法  

q_nullptr,              // 壓縮等級  

false

,                  

// 是否是保留原始檔案?  

"63636361"

) )          

// 壓縮密碼  

else

Qt之使用quazip來壓縮檔案

我使用的是qt5.7版本,好像5.12版本將quazip已經整合到安裝包中。不管5.12版本,以下是5.7版本整合quazip的方法,使用的編譯工具為qt creator.提取碼 hkev csdn cmakelists.txt copying doxyfile findquazip.cmake i...

使用SharpZipLib元件對檔案進行壓縮 解壓

1 引用publictoolslib.dll 如果提示出錯,可以再引用該專案debug目錄下的icsharpcode.sharpziplib.dll。該類中的方法未進行成功與否返回處理,可根據需要自己更改源 2 呼叫helpzip.sharpziphelper.compressfile 方法 壓縮單...

Qt載入磁碟檔案和對檔案內容進行過濾

一 關鍵函式 1,qdir file path 當前檔案路徑 2,qstringlist filelist file entrylist 獲得進入目錄的檔案列表 3,當前程式的目錄 4,qdir setcurrent path 設定當前的目錄 二,例項 1,標頭檔案 ifndef loadfilef...