好像有點久沒有寫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 的壓縮 及 解壓縮的使用方法
如果有需要更詳細一點的解說像是壓縮檔加入密碼、解壓縮密碼、壓縮等級等
若內容有勘誤 麻煩各位大大指點 <(_ _)>