C# 學習筆記 - 用 dotNetZip 壓縮一波

好像有點久沒有寫C#的東西了((並沒有XD

這一次要紀錄的是 dotNetZip

其實還有很多其他的方法可以進行壓縮 像是shareZip之類的不過這一次因為需求(?) 的關係 只需要用到Zip檔 所以就選了dotNetZip惹 (而且看起來也比較簡單)

然後因為需求只需要壓縮 所以我就不寫解壓縮了(被揍爆 開玩笑的啦

這一次紀錄的重點分4段

  • 如何使用dotNetZip

  • 壓縮

  • 解壓縮

  • 結語

如何使用dotNetZip

開始使用dotNetZip時,必須要先using Ionic.Zip

若要 using using Ionic.Zip 則需要先用 Nuget 幫你的專案加入dotNetZip

接下來就要搜尋 dotnetzip 進行安裝

安裝完成後就可以在專案內 using Ionic.Zip了

壓縮

var locate = @"D:\dotNetZip Example Files\";

using (var zip = new ZipFile())
{
    zip.AddFile(locate + @"resume.pdf", "TEST Directory");
    zip.Save(locate + "resume.zip");
}

以上程式碼為壓縮 就這樣 下一段要講的是解壓縮.......

zip.AddFile(FileName, directoryArchive)的這個方法

FileName 就是你即將要壓縮的檔案所在位置
directoryArchive 就是你要壓縮時要把它放在哪一個資料夾,若輸入空字串,就是不包進資料夾內
若不帶入資料則是該壓所檔案原有的位置

以上述的程式碼來進行輸出,會得到壓縮檔內長這個樣子

如果將程式碼改成

zip.AddFile(locate + @"resume.pdf");

則會將他所屬的資料夾帶入,resume.pdf目前在我電腦中所屬的資料夾位置是 D:\dotNetZip Example Files

所以輸出就會變成以下這個樣子

如果想要命名包入的資料夾則可以改成這樣

zip.AddFile(locate + @"resume.pdf","TEST Directory");

輸出的ZIP檔就會變成以下這個樣子

解壓縮

這一部分要記錄的是解壓縮的部分

解壓縮相對沒那麼複雜,只需要指定壓縮出來的檔案如何處理,以及位置

var locate = @"D:\dotNetZip Example Files\";
using (var zip =  ZipFile.Read(locate+"resume.zip"))
{
    foreach (var zipEntry in zip)
    {
        zipEntry.Extract(locate, ExtractExistingFileAction.OverwriteSilently);
    }
}

ZipFile.Read("壓縮檔位置") 這一段程式碼則是告訴電腦我們的壓縮檔在何處

locate 即為壓縮出來的檔案位置將要放置何處

ExtractExistingFileAction 有4個動作

  • InvokeExtractProgressEvent
  • OverwriteSilently
  • DoNotOverwrite
  • Throw

個人常用到的是中間兩個,OverwriteSilently 就是直接覆蓋的意思

而 DoNotOverwrite 就如字面上所述,不要覆蓋

結語

以上大概就是 dotNetZip 的壓縮 及 解壓縮的使用方法

如果有需要更詳細一點的解說像是壓縮檔加入密碼、解壓縮密碼、壓縮等級等

可以到別人寫的部落格官方文件進行參考

若內容有勘誤 麻煩各位大大指點 <(_ _)>