八月份快要過去了,突然想到我還沒有寫一篇日誌呢,想一想這乙個月我並沒有做開發以外的事情,三十天來還是嘗試並且解決了不少技術上的問題的。所以這次我打算將其中一些作為日誌分享出來。
前幾天正在討論使用打包工具的問題,待選的方案是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...