原文鏈接
https://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win
https://www.codeproject.com/Articles/4135/XZip-and-XUnzip-Add-zip-and-or-unzip-to-your-app-w
完全開源隨便玩耍的一個老庫庫,
本文涉及IDE VS2013 vc++6.0
無需調用靜態庫或者動態庫,直接包含即可使用 MFC 非MFC工程都可以沒有限制,為了方便自身使用涉及這寶寶
自己寫個導出庫使用,順便作此文。
--------------------------------------------------------------------------------------------------------------------------------------------------
VS2013/VC++6.0(后面同稱IDE)
取消預編譯處理
VC- 工程- C/C++ -預編譯處理-不使用預補償頁眉
VS-工程-C/C++-找到不使用預編譯處理即可
還有一點比較重要的這三者的順序,如果不注意就報錯了
#include <winnt.h>
#include "XUnzip.h"
#include "XZip.h"
好了配置好IDE然后就可以隨便玩耍了,
這個庫里面有
HZIP CreateZip(void *z, unsigned int len, DWORD flags);//創建一個空的zip
Z:某路徑下壓縮文件名,無路徑默認當前工作目錄
len:壓縮內存的大小,其他情況為0
flags:壓縮文件使用標志 ZIP_FILENAME
成功返回非0
ZipAdd(HZIP hz, const TCHAR *dstzn, void *src, unsigned int len, DWORD flags);//將一個文件添加進行壓縮
hz:創建或者打開zip的文件指針
dstzn:在zip文件中顯示的文件名
src:對於(ZIP_FILENAME 壓縮)的情況,這個是需要添加到壓縮包的文件的名字,需要給出具體的路徑,若沒有絕對路徑那么默認當前工作目錄下
len:對於壓縮內存的內容(ZIP_MEMORY)這是壓縮內存的大小,其他情況,這個應該是0
flags:如果是壓縮文件,這個標志是ZIP_FILENAME
returns:ZRESULT 成功為ZR_OK
HZIP OpenZip(void *z, unsigned int len, DWORD flags);打開一個已經存在的壓縮文件
z:壓縮文件名 【相對路徑一般為當前工作目錄】
len:對於壓縮內存的內容(ZIP_MEMORY)這是壓縮內存的大小,其他情況,這個應該是0
flags:如果是壓縮文件,這個標志是ZIP_FILENAME
returns: HZIP 非0為成功,0這是失敗
ZRESULT GetZipItemA(HZIP hz,int index,ZIPENTRY * ze); //獲取壓縮文件里的信息
ZRESULT GetZipItemW(HZIP hz,int index,ZIPENTRYW * ze);//獲取壓縮文件里的信息
hz:創建/打開zip文件指針
index:zip文件里的元素下標(0開始)
ze:一個指向ZIPENTRY結構體指針(ANSI)或者ZIPENTRYW(Unicode寬字節)
returns:ZRESULT 成功為ZR_OK
ZRESULT FindZipItemA(HZIP hz, const TCHAR *name, bool ic, int *index, ZIPENTRY *ze); //在壓縮文件里查找某元素
ZRESULT FindZipItemW(HZIP hz, const TCHAR *name, bool ic, int *index, ZIPENTRYW *ze);//在壓縮文件里查找某元素
hz:創建/打開zip文件指針
name:需要在zip文件中查找的元素名字
ic:值為TRUE大小寫不敏感
index:返回要查找元素的下標,否則是-1,
ze:一個指向ZIPENTRY結構體指針(ANSI)或者ZIPENTRYW(Unicode寬字節)
returns:ZRESULT 成功為ZR_OK
ZRESULT UnzipItem(HZIP hz, int index, void *dst, unsigned int len, DWORD flags) //解壓壓縮文件里面的某元素
hz:創建/打開的zip文件指針
index:要解壓的元素下標
dst:解壓出來的文件名字
len:對於壓縮內容(ZIP_MEMORY)這個值是壓縮內存的大小,其他情況,這個值應該是0
flags:如果是壓縮文件,那么使用這個標志ZIP_FILENAME
returns:ZRESULT 成功返回ZR_OK
ZRESULT CloseZipZ(HZIP hz); //關閉壓縮文件
hz:要操作的zip文件指針
returns:ZRESULT 成功返回ZR_OK
注意壓縮文件的路徑,即可隨心所欲壓縮。