如何压缩文件夹中的所有文件

时间:2012-05-17 21:08:01

标签: c# zip

我有一个文件夹"D:\folder",在这个文件夹中我有10个文件需要压缩到新的档案"D:\folder.zip"

目前我正在使用 ICSharpCode.SharpZipLib ,但这不是强制性要求,因此可以接受其他解决方案。

我遇到的问题是,当我尝试执行方法FileStream fs = File.OpenRead(@"D:\folder")时,由于访问了指定的路径,我收到错误。

如何以简单的方式压缩这些文件?

2 个答案:

答案 0 :(得分:24)

DotNetZip比SharpZipLib更容易使用,例如压缩文件夹中的所有文件:

  using (ZipFile zip = new ZipFile())
  {
    zip.AddDirectory(@"MyDocuments\ProjectX", "ProjectX");
    zip.Save(zipFileToCreate);
  }

这是此页面的一个示例:

http://dotnetzip.codeplex.com/wikipage?title=CS-Examples&referringTitle=Examples

答案 1 :(得分:15)

我也同意Antonio Bakula建议使用DotNetZip而不是SharpZipLib。

.NET 4.5包含用于操作.zip文件的新ZipArchiveZipFile类。有了这种支持,你要做的就是完成:

ZipFile.CreateFromDirectory(@"D:\Folder", @"Folder.zip");

作为旁注,您收到错误的原因是因为您尝试打开目录而不是文件。 File.OpenRead用于打开文件以供读取,因为您提供了一个目录,就会收到错误。如果要枚举特定文件夹中的文件或目录,可以使用Directory.EnumerateFilesDirectory.EnumerateDirectories