[cpp]view plain
copy
print?
據說對.rar檔案的解壓是沒有開源庫的,而且好多軟體都是收費的,因此這裡便不再**對.rar檔案的解壓,下面研究一下.zip檔案。
下面我將講解一下如何用zlib.lib和minizip.lib來對乙個帶密碼的.zip壓縮檔案進行解壓。廢話少說,開始分析:
1. 將zlib.lib和minizip.lib放到工程下(因為是靜態庫,所以將兩個檔案與其他工程檔案放到同乙個目錄中即可)
2. 將ioapi.h和unzip.h和zip.h和zlib.h放到工程下(我為了看著清潔,為這幾個檔案建立了資料夾--zlib)
3. 在工程的.cpp檔案的頭部,新增如下**:
#include "zlib\unzip.h"
#include "zlib\zlib.h"
#include "zlib\zip.h"
#pragma comment( lib, "zlib.lib" ) // 將靜態庫引用進來
#pragma comment( lib, "minizip.lib" )
廢話少說,上**:
注:因為zip檔案對於zlib來說相當於是以檔案(個人覺得也可以理解為資料塊)的形式存在的,在進行解壓時,會把zip中的檔案(資料夾)當成一塊一塊的資料進行讀取,因此zlib會從zip檔案中按順序乙個乙個檔案(資料夾)的讀取,如果是檔案,則寫成檔案,如果是資料夾,則需要使用者來自己創立該資料夾的路徑,因為zlib不能往不存在的路徑中寫檔案(這是我經過測試發現的)。以上的注釋是下面程式的執行過程
#define zip_open_failed 1
#define zip_getglobal_failed 2
#define zip_getfile_failed 3
#define zip_createfile_failed 4
#define zip_openpsdfile_failed 5
#define zip_openfile_failed 6
#define zip_readfile_err 7
#define max_bufsize 4096 // 從zip檔案中一次讀取的最大緩衝值
//函式名稱:unzipfile
//函式功能:解壓zip檔案
//輸入引數:strfilepath 帶解壓zip檔案的路徑+名稱
// strtmppath 解壓到這個路徑下
// strpsd 密碼
//返 回 值:參考configinfo.h
intcunzip::unzipfile(cstring strfilepath, cstring strtmppath, cstring strpsd)
default
:
// 檔案
} else
} while
(true)
else
if(nnum == 0)
else
} } break
; }
} unzgotonextfile(uf);
} if
(uf)
unzclose(uf);
return
-1;
} // 在磁碟中建立路徑strpath
void
c**dlg::oncreatefilepath(cstring strpath)
strpath = strpath.mid(npos+1);
strfolder += "\"
; }
}
zip檔案目錄解壓
解壓zip檔案與刪除檔案目錄 解壓zip檔案 param fis zip檔案流 param unzipdirectory 解壓後存放目錄的路徑 return 是否解壓成功 see 類 類 方法 類 成員 public static boolean unzip inputstream fis,stri...
Qt QuaZip 解壓zip檔案
運用相對還是比較簡單的示例如下,比較簡單,即在當前目錄解壓zip檔案,一般都能看懂 quazip archive zip if archive.open quazip mdunzip qdir dir giftdir for bool f archive.gotofirstfile f f arch...
python 解壓zip檔案
import os import zipfile import time defunzipfile file dir,file name,filelist param file dir 絕對路徑 param file name 解壓檔名 param filelist 返回解壓後的所有檔名 retur...