C++ 使用老牌庫xzip & unzip對文件進行壓縮解壓


原文鏈接

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

 

注意壓縮文件的路徑,即可隨心所欲壓縮。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM