最近使用MapGis對.MPJ工程文件文件裁剪后,要對裁剪后的圖形文件.ML,.MT,.MP,.MPJ文件打包,在網上找到7zip,Zlib的庫,雖然都有源碼,但是Zlib庫中的使用沒找到文件壓縮的函數,有兩個函數a.ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen));b.ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,const Bytef *source, uLong sourceLen));這兩個函數貌似是對字符解壓縮的,找了沒有找到好的方法(可能不了解Zlib的用法),然后在一個網站上找到zip解壓縮的方法,使用了一下,發現使用方法簡單。
這個Zip Utils庫可能是別人在其他庫的基礎上封裝的,具體什么庫我也不清楚。這個庫很簡單就只有unzip,zip這兩個類,要對文件夾壓縮可以這樣使用。
1 CreateFiles();//可以不需要,指定目錄即可 2 HZIP hz;
3 // EXAMPLE 1 - create a zipfile from existing files 4 hz = CreateZip(_T("\\simple1.zip"),0); 5 ZipAdd(hz,_T("znsimple.bmp"), _T("\\simple.bmp")); 6 ZipAdd(hz,_T("znsimple.txt"), _T("\\simple.txt")); 7 CloseZip(hz); 8 _tprintf(_T("Created '\\simple1.zip'\n"));
使用起來很簡單,只需要定義一個HZIP 對象,然后創建一個壓縮文件,之后要做的就是調用ZipAdd函數將要壓縮的文件添加到壓縮文件中,最后是關閉Zip文件。這個庫使用起來很方便,之前也試過用WinRar軟件的命令生成.rar的壓縮文件,但是問題是WinRar不開源,使用的時候要知道WinRar的安裝路徑,對其有依賴性,而且是否壓縮完了,不得而知,不知大牛們有沒有好的方法?
Zip Utils - clean, elegant, simple, C++/Win32
這個庫的下載地址:http://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win32