【问题标题】:How to compress a directory into a zip file programmatically如何以编程方式将目录压缩为 zip 文件
【发布时间】:2010-03-23 09:02:19
【问题描述】:

我想将可以包含任意数量子目录的整个目录压缩成一个 ZIP 文件。

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

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

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

【问题讨论】:

    标签: c# .net zip gzip


    【解决方案1】:

    使用DotNetZip,ZipFile 类上有一个 AddDirectory() 方法可以执行您想要的操作:

    using (var zip = new Ionic.Zip.ZipFile())
    {
        zip.AddDirectory("DirectoryOnDisk", "rootInZipFile");
        zip.Save("MyFile.zip");
    }
    

    这个例子和许多其他例子都是available on codeplex

    【讨论】:

    • DotNetZip 不适用于生产。它包含一些关键的错误。我已经忘记了具体是哪一个,但经过长时间的调查,我曾经得出结论,在目前的状态下,它绝对不可靠。
    【解决方案2】:

    看看这些 API 之一:

    【讨论】:

      【解决方案3】:
      ZipFile.CreateFromDirectory(<path of folder you need to zip>, <path of zip file with .zip in the end>, CompressionLevel.Fastest, true);
      

      【讨论】:

      • 考虑到DotNetZipSharpZipLib 都是废弃软件,实际的.NET 解决方案是理想的。
      • 我永远记不起这个的语法。不要忘记添加对 System.IO.Compression.FileSystem 的引用和 System.IO.Compression 的 using 语句。
      【解决方案4】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-24
        • 2013-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多