2010-03-23 81 views
12

我想將可以將任意數量的子目錄壓縮成一個ZIP文件的整個目錄。如何以編程方式將目錄壓縮爲zip文件

我能夠以編程方式將單個文件壓縮爲zip文件。

要壓縮整個目錄,我可以想到一個遍歷每個子目錄並壓縮它的遞歸程序。

但是有沒有簡單的方法來使用類似的代碼壓縮整個文件夾,而不必編寫任何遞歸函數?

回答

17

使用DotNetZip,有一個AddDirectory ()方法在ZipFile類上做你想做的事:

using (var zip = new Ionic.Zip.ZipFile()) 
{ 
    zip.AddDirectory("DirectoryOnDisk", "rootInZipFile"); 
    zip.Save("MyFile.zip"); 
} 

這個例子和其他很多,都是available on codeplex

+0

DotNetZip不適用於生產。它包含一些重要的錯誤。我已經忘記了究竟是什麼,但是我經過長時間的調查後得出結論,在目前的狀態下,這絕對是不可靠的。 – SerG 2015-03-23 14:25:38

5
ZipFile.CreateFromDirectory(<path of folder you need to zip>, <path of zip file with .zip in the end>, CompressionLevel.Fastest, true); 
+0

考慮到'DotNetZip'和'SharpZipLib'都是棄用軟件,實際的.NET解決方案是理想的選擇。 – TEK 2016-02-12 17:03:30

+1

我永遠不會記住這個語法。不要忘記添加對System.IO.Compression.FileSystem的引用和System.IO.Compression的using語句。 – Scott 2016-06-23 19:12:36

相關問題