本文介紹如何用CZip/CUnzip類壓縮/解壓縮文件,這個類使用gzip GNU源代碼(gzip-1.2.4a)。這是個免費軟件,在GUN通用公共許可證(General Public License)條款下可以分發及修改此軟件,關於這個通用公共許可證的詳細條款請參考:
http://www.vckbase.com/vckbase/uniondocs/gungpl.htm
目標動態庫輸出兩個類:
CZip(用於壓縮文件)
CUnzip (用於解壓縮文件)
首先用文件名建立CZip 或 CUnzip 對象。然後,壓縮和解壓縮都必須調用對象的 SwapSize() 方法,參數是目標文件名。如果調用出錯,SwapSize()可以丟出CZipException異常。與異常相關的信息可以用GetStringt方法來獲得,以下幾種情況都會產生異常:
--源文件不存在或無法以讀方式打開文件
--無法創建目標文件。例如,這個文件已經存在
--gzip代碼返回一個錯誤,在這種情況下,與異常相關的信息包含由gzip源代碼通過stderr返回的信息
CZip 或 CUnzip的使用方法如下:
在工程中包含czip.h文件
用zipdll.lib將工程鏈接到zipdll.dll
將zipdll.dll拷到可執行文件所在的目錄
注意:也可以動態鏈接到zipdll.dll(沒有測試過)。下面是使用CZip/CUnzip類的例子代碼段:
try
{
CZip myFileToZip ("file_to_zip_name");
myFileToZip.SwapSize ("file_zipped_name");
}
catch (CZipException e)
{
cout << "problem while zipping : " << e.GetString() << endl;
delete pExcep;
}
注意: 如果想用WinZip來解壓縮,則不能用".zip"作為文件擴展名。否則WinZip無法打開這個文件。 用WinZip壓縮的文檔(只能包含一個文件)可以用CUnzip對象解開。
本文配套源碼