好用的DotNetZip Library

如何使用.Net 產生 zip 壓縮檔

由於批次程式的Log檔察看的機會不多,但是出問題的時候又不能沒有,所以通常我們都會採取定時壓縮留存的方式來處理這些文字檔,之前的工作由於公司希望盡量不要使用第三方的元件,所以我們採用J#的中的「java.util.zip」類別來進行壓縮以及解壓縮的動作,不過J#實在是冷門到不行,不過當下既然老闆希望快點解決這個壓縮的問題,所以就閉著眼睛看大家很high的使用J#來做這一段了。

現在我又再一次遇到了要在.Net中進行壓縮的作業,趕快上網再次看一下我所知道的「DotNetZipSharpZip」兩個函示庫,兩個比較起來後者支援的格式比較多,前者僅支援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,單一檔案的解壓縮可以使用Extract

                using (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 提供給大家參考

 

===========================這是簽名檔分隔線==============================
我沒有甚麼技術能力
不過卻希望在這邊跟大家分享自己遭遇的一些問題
希望大家有更好的方法可以跟我說!!
======================================================================