9

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

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

我面临的问题是,当我尝试执行该方法时,FileStream fs = File.OpenRead(@"D:\folder")由于访问指定路径而出现错误。

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

4

2 回答 2

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

于 2012-05-17T21:11:37.613 回答
19

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

.NET 4.5 包括用于操作 .zip 文件的新类ZipArchive和类。ZipFile有了这种支持,您尝试通过以下方式完成:

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

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

于 2012-05-17T21:20:15.340 回答