[C#] ZipFile 類別的使用
// 版本需求:.Net 4.5以上
有時我們會想把一些資料打包成 ZIP 壓縮檔,這時可以使用 ZipFile 類別。
如果要使用 ZipFile 類別,首先要在程式碼最上方加入:
然後就可以呼叫 ZipFile.CreateFromDirectory() 函式:
現在只要把 source 和 destination 放進去就好了嗎? 錯!基本上大部分的人都會遇到一個問題:找不到 ZipFile 這個類別。奇怪,我們剛剛不是用 using 引入需要的命名空間了嗎?為什麼還不行?
原來是因為我們目前的專案沒有參考到需要的組件-System.IO.Compression.FileSystem,那要怎麼加入?先在方案總管對專案名稱按右鍵,再選 加入 > 參考:
有時我們會想把一些資料打包成 ZIP 壓縮檔,這時可以使用 ZipFile 類別。
如果要使用 ZipFile 類別,首先要在程式碼最上方加入:
using System.IO;
using System.IO.Compression;
然後就可以呼叫 ZipFile.CreateFromDirectory() 函式:
ZipFile.CreateFromDirectory(source, destination)
其中的 source 是一個資料夾名,代表把那個資料夾下的所有檔案都加入壓縮檔,並存到 destination。這裡要注意的是:source 是資料夾(目錄)的路徑,而 destination 則是包含路徑的檔名。現在只要把 source 和 destination 放進去就好了嗎? 錯!基本上大部分的人都會遇到一個問題:找不到 ZipFile 這個類別。奇怪,我們剛剛不是用 using 引入需要的命名空間了嗎?為什麼還不行?
原來是因為我們目前的專案沒有參考到需要的組件-System.IO.Compression.FileSystem,那要怎麼加入?先在方案總管對專案名稱按右鍵,再選 加入 > 參考:
接下來會出現如下視窗,把 System.IO.Compression.FileSystem 打勾:
按下確定就 OK 了。
- 實際應用
比如說想讓使用者能把目前應用程式的設定值匯出,就可以用到 ZipFile:
private void Button8_Click(object sender, EventArgs e) // 「匯出」這個按鈕
{
if (saveFileDialog2.ShowDialog() == DialogResult.OK)
{
string fname = saveFileDialog2.FileName;
ZipFile.CreateFromDirectory(path, fname);
System.Threading.Thread.Sleep(500);
Process.Start("C:\\Windows\\explorer.exe", "/select, " + fname); // 呼叫檔案總管顯示剛產生的壓縮檔
}
}
留言
張貼留言