【问题标题】:How to zip all files in folder如何压缩文件夹中的所有文件
【发布时间】:2012-05-25 11:48:33
【问题描述】:

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

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

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

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

【问题讨论】:

标签: c# zip


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    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

    【讨论】:

    • 是的,这是一个比 SharpLib 更容易使用的库,+1
    • 谢谢!你能告诉我这个 ZipFile 需要哪个程序集吗? Ionic.Zip - 据我了解。对吗?
    • 当我使用这个方法时 zip.AddDirectory(@"MyDocuments\ProjectX", "ProjectX");我得到一个文件夹的存档。如何制作只包含源文件夹中我的文件的存档?谢谢!
    • 将第二个参数留空:zip.AddDirectory(@"MyDocuments\ProjectX", "");
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多