好像有點久沒有寫C#的東西了((並沒有XD
這一次要紀錄的是 dotNetZip
其實還有很多其他的方法可以進行壓縮 像是shareZip之類的不過這一次因為需求(?) 的關係 只需要用到Zip檔 所以就選了dotNetZip惹 (而且看起來也比較簡單)
然後因為需求只需要壓縮 所以我就不寫解壓縮了(被揍爆 開玩笑的啦
這一次紀錄的重點分4段
如何使用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 的壓縮 及 解壓縮的使用方法
如果有需要更詳細一點的解說像是壓縮檔加入密碼、解壓縮密碼、壓縮等級等
若內容有勘誤 麻煩各位大大指點 <(_ _)>