【问题标题】:How to unzip compressed files using C#?如何使用 C# 解压缩压缩文件?
【发布时间】:2011-07-13 17:30:48
【问题描述】:

如何使用 C# 解压缩文件?我发现我必须使用第三方库。有没有直接的方法?

【问题讨论】:

  • 不同意投票关闭这个基于是一个精确的重复,因为它似乎是一个稍微不同的变体(推荐系统库与推荐外部库),即使答案最终重叠。

标签: c# zip


【解决方案1】:

System.IO.Packaging 命名空间包含一些压缩类,例如ZipPackage,但它们绝不像使用第三方库那么简单。我强烈建议您考虑使用第三方库。

【讨论】:

    【解决方案2】:

    你可以使用框架的工具来压缩然后解压缩

    sinxe .NET 1.x 网络上有很多压缩库,有些是免费的,有些是商业的。 一个很棒的免费库是#Zip,或者免费 C# IDE 的创建者#develop。

    .NET Framework 2.0 引入了用于压缩和解压缩流的 GZipStream 和 DeflateStream 类。以下是 MSDN 上的链接:

    http://msdn2.microsoft.com/en-us/library/system.io.compression.gzipstream(VS.80).aspx

    http://msdn2.microsoft.com/en-US/library/system.io.compression.deflatestream(VS.80).aspx

    【讨论】:

    【解决方案3】:
    【解决方案4】:

    Codeplex 的免费Iconic Zip 让我很幸运。它的拉链和解压缩速度非常快,效果很好,而且体积小。它也适用于 Mono。

    【讨论】:

      【解决方案5】:

      .NET 4.5 有一个更有用的 ZipPackage 类

      http://msdn.microsoft.com/en-us/library/system.io.packaging.zippackage.aspx

      还是不太好用,类文档中的示例代码比较长。

      【讨论】:

        【解决方案6】:

        对于 zip 文件,DotNetZip 效果很好。只需一个程序集即可支持 zip 文件。

        对于 gzip 文件,您可以使用System.IO.Compression namespaceDotNetZip 中的流。请注意,如果您有 *.tar.gz*.tgz 文件,则您还需要能说出 tar(1)tar(5) 的内容。

        对于 zlib 压缩数据,DotNetZip 再次成为您的朋友。 zlib 使用 Deflate 算法。不过,我不确定 zlib6System.IO.Compression.DeflateStream 是否兼容。

        还有其他支持这些压缩格式的库,但我相信其中有很多是非托管代码的包装器。这是好事还是坏事取决于您的要求。

        DotNetZip 是纯托管代码。我的测试表明它的运行速度与Info-Zip's open-source zip/unzip 实现的速度大致相同。生成的压缩文件不是字节相同的,但它们是兼容的并且具有大致相同的压缩率。


        编辑注释: DotNetZip 曾经住在 Codeplex。 Codeplex 已关闭。旧档案仍然是available at Codeplex。看起来代码已经迁移到Github了:


        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-07-27
          • 2011-09-01
          • 2011-11-15
          • 2018-06-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多