如何使用C#解压缩文件?我发现我必须使用第三方库。有没有直接的方法?
答案 0 :(得分:3)
System.IO.Packaging命名空间包含一些压缩类,例如ZipPackage,但它们并不像使用第三方库那么简单。我强烈建议您考虑使用第三方库。
答案 1 :(得分:2)
您可以使用框架工具压缩然后解压缩
sinxe .NET 1.x你网上有很多compession库,有些是免费的,有些是商业的。 一个很棒的免费库是#Zip,或者是免费的C#IDE的创建者,#dev。
.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
答案 2 :(得分:1)
答案 3 :(得分:1)
我从Codeplex的免费Iconic Zip中获得了好运。它可以非常快速地拉链和解压缩,效果很好并且尺寸很小。它也适用于Mono。
答案 4 :(得分:0)
对于 zip 文件,DotNetZip效果很好。 zip文件支持只需要一个程序集。
对于 gzip 文件,您可以使用System.IO.Compression namespace或DotNetZip中的信息流。请注意,如果您有*.tar.gz
或*.tgz
个文件,则还需要能够说tar(1)或tar(5)的内容。
对于 zlib 压缩数据,DotNetZip再次成为您的朋友。 zlib使用Deflate算法。我不确定zlib 6和System.IO.Compression.DeflateStream是否兼容。
还有其他库支持这些压缩格式,但我相信其中许多都是非托管代码的包装器。这是好还是坏取决于你的要求。
DotNetZip是纯托管代码。我的测试显示它的运行速度与Info-Zip's open-source zip/unzip实现的速度大致相同。生成的压缩文件不是字节相同的,但它们是兼容的并且具有大致相同的压缩比。
编辑注: DotNetZip曾经住在Codeplex。 Codeplex已关闭。旧档案仍为available at Codeplex。看起来代码已迁移到Github:
答案 5 :(得分:0)
.NET 4.5有一个更有用的ZipPackage类
http://msdn.microsoft.com/en-us/library/system.io.packaging.zippackage.aspx
它仍然不是很容易使用,类文档中的示例代码很长。