如何以编程方式将目录压缩为zip文件

问题描述:

我想将可以将任意数量的子目录压缩成一个ZIP文件的整个目录。如何以编程方式将目录压缩为zip文件

我能够以编程方式将单个文件压缩为zip文件。

要压缩整个目录,我可以想到一个遍历每个子目录并压缩它的递归程序。

但是有没有简单的方法来使用类似的代码压缩整个文件夹,而不必编写任何递归函数?

使用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

看看这些API的一个:

这是我喜欢用:

亲:很容易实现

骗子:不是很方便

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