【发布时间】:2010-03-23 09:02:19
【问题描述】:
我想将可以包含任意数量子目录的整个目录压缩成一个 ZIP 文件。
我能够以编程方式将单个文件压缩为 zip 文件。
要压缩整个目录,我可以想到一个遍历每个子目录并对其进行压缩的递归程序。
但是有没有什么简单的方法可以使用类似的代码压缩整个文件夹,而不必编写任何递归函数呢?
【问题讨论】:
我想将可以包含任意数量子目录的整个目录压缩成一个 ZIP 文件。
我能够以编程方式将单个文件压缩为 zip 文件。
要压缩整个目录,我可以想到一个遍历每个子目录并对其进行压缩的递归程序。
但是有没有什么简单的方法可以使用类似的代码压缩整个文件夹,而不必编写任何递归函数呢?
【问题讨论】:
使用DotNetZip,ZipFile 类上有一个 AddDirectory() 方法可以执行您想要的操作:
using (var zip = new Ionic.Zip.ZipFile())
{
zip.AddDirectory("DirectoryOnDisk", "rootInZipFile");
zip.Save("MyFile.zip");
}
这个例子和许多其他例子都是available on codeplex。
【讨论】:
看看这些 API 之一:
【讨论】:
ZipFile.CreateFromDirectory(<path of folder you need to zip>, <path of zip file with .zip in the end>, CompressionLevel.Fastest, true);
【讨论】:
DotNetZip 和SharpZipLib 都是废弃软件,实际的.NET 解决方案是理想的。