如何使用.Net 產生 zip 壓縮檔
由於批次程式的Log檔察看的機會不多,但是出問題的時候又不能沒有,所以通常我們都會採取定時壓縮留存的方式來處理這些文字檔,之前的工作由於公司希望盡量不要使用第三方的元件,所以我們採用J#的中的「java.util.zip」類別來進行壓縮以及解壓縮的動作,不過J#實在是冷門到不行,不過當下既然老闆希望快點解決這個壓縮的問題,所以就閉著眼睛看大家很high的使用J#來做這一段了。
現在我又再一次遇到了要在.Net中進行壓縮的作業,趕快上網再次看一下我所知道的「DotNetZip、SharpZip」兩個函示庫,兩個比較起來後者支援的格式比較多,前者僅支援zip一種格式,不過我僅需要zip這種格式而以外加前者持續一直在更新,又存放在微軟的 CodePlex 上面,所以就選DotNetZip吧!!
1. 如何取得?
DotNetZip Library : http://www.codeplex.com/DotNetZip/license
2. 簡易使用方法
a. 整個資料夾壓縮(加密碼)
記住如果要加密碼必須要在使用AddDirectory加入目錄之前就先設定,否則是沒有效果的
using (ZipFile oZip = new ZipFile())
{
oZip.Encoding = System.Text.Encoding.Default;
oZip.Password = sPassword; //密碼要先設定才加入檔案
oZip.AddDirectory(sZipDir);
oZip.Save(sSavePath + @"\" + sSaveName);
}
b.單一檔案壓縮
密碼設定同上方資料夾壓縮,然後使用AddFile加入檔案using (ZipFile oZip = new ZipFile()) { oZip.Encoding = System.Text.Encoding.Default; oZip.Password = sPassword; foreach (string sFile in arFiles) { oZip.AddFile(sFile); } oZip.Save(sSaveFilePath + @"\" + sSaveFileName); }
c.解壓縮至特定路徑
解壓縮使用ExtractAll,單一檔案的解壓縮可以使用Extractusing (ZipFile oZip = new ZipFile(sZipName)) { oZip.Encoding = System.Text.Encoding.Default; if (!Directory.Exists(sExtractPath)) Directory.CreateDirectory(sExtractPath); oZip.Password = sPassword; oZip.ExtractAll(sExtractPath, true); }
我寫的 ExtZip.zip 提供給大家參考
===========================這是簽名檔分隔線==============================
我沒有甚麼技術能力
不過卻希望在這邊跟大家分享自己遭遇的一些問題
希望大家有更好的方法可以跟我說!!
======================================================================