1. 用微軟內建的方法
http://msdn.microsoft.com/zh-tw/library/ms404280.aspx
http://msdn.microsoft.com/zh-tw/library/system.io.compression.zipfile.aspx
首先要呼叫該方法的專案必須為.NET4.5 版本
接著加入參考 System.IO.Compression.FileSystem.dll 檔
並引用命名空間 System.IO.Compression 之後~
即可呼叫到該方法囉~頗方便的
因為我只要壓縮,所以只要用到下面 3 行就解決了
string startPath = @"C:\ProjectSamplePack"; string zipPath = @"C:\result.zip"; ZipFile.CreateFromDirectory(startPath, zipPath);
算是頗易用的一個方法。
2. 使用 SharpZip
http://jjnnykimo.pixnet.net/blog/post/25844741-c%23,-sharpzip-%E6%87%89%E7%94%A8
http://itgroup.blueshop.com.tw/uuuiii00/AllenJ?n=convew&i=21586
官網:http://www.icsharpcode.net/OpenSource/SharpZipLib/
試了一下,感覺沒試到一個特別易用的懶人方法... 還要另外寫東西來重組他提供的 stream 元件,
不尬意... 不試了。
3.WinRar 內建方法
http://blog.xuite.net/yan.kee/CSharp/17709180-%5B%E6%94%B6%E8%97%8F%5DC%23+%E5%88%A9%E7%94%A8WinRAR+(%E5%8A%A0%E5%AF%86)%E5%A3%93%E7%B8%AE%E5%8F%8A%E8%A7%A3%E5%A3%93%E7%B8%AE+%E7%9B%B8%E9%97%9C%E6%96%87%E4%BB%B6%E5%A4%BE%E5%8F%8A%E6%96%87%E4%BB%B6+
一個重點是必須要灌好 WinRar 的軟體之後才能使用,
不是很推 @@
4. 使用 DotNetZip 處理
http://www.dotblogs.com.tw/fatty0860/archive/2009/02/09/7084.aspx
後來是使用這個作為解決功能需求的方法,
因為他簡單易用 XD
.Net 版本只要 2.0 以上就可以用,
而這邊的需求也只有簡單的壓縮檔案而已,
CODE 如下:
using Ionic.Zip; using Ionic.Zlib; protected void btnZipTest_Click(object sender, EventArgs e) { string zipFile = @"C:\test.zip"; ZipFile zip = new ZipFile(zipFile); zip.AddDirectory(@"C:\ProjectSamplePack"); zip.Save(); }
執行之後很快樂的可以發現目標檔案就這樣出現在目的的路徑囉~
這次找到的大概是這些~
20121130補充---
到後來是使用第4個的DOTNETZIP完成功能的撰寫,
好好用啊~看資料夾的狀態感覺也是一邊壓縮,先產生一個TMP檔做處理。
但是發現有個小問題就是...
檔名不能直接用Datetime.Now作為命名。
以今天日期為例,
假設檔名為"test_"+Datetime.Now.ToString()+".zip"
會出現 test_2012/11/30.zip這種名稱,
但這種檔名是不合法的,程式端會認不得而造成失敗,
謹記....orz
把Datetime.Now.ToString()
回覆刪除改成
DateTime.Now.ToString("yyyy-MM-dd,HH-mm-ss")
指定日期格式 就可以避免勝不認得而造成失敗了