VC 解壓有密碼的 zip檔案

2021-07-08 13:57:57 字數 1866 閱讀 3622

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