2011-07-13 175 views
1

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

+0

[推荐一个库/ API来解压C#文件](http:// stackoverflow。com/questions/1023476/recommended-a-library-api-to-unzip-file-in-c) – wRAR

+1

不同意投票结束这是基于一个确切的dup,因为它似乎是一个稍微不同的变化该问题(推荐系统库vs推荐外部库),即使答案最终重叠。 – heisenberg

+0

@kekekela非常感谢 – Adham

回答

2

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

2

您可以使用该框架的工具来压缩,然后将其解压

sinxe .NET 1.x中,你有很多compession图书馆内上了网,有些是免费的一些是商业。 伟大的免费图书馆是#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

+1

对#ZipLib而言+1 ......一直保持着永远的效果,至今仍在各地使用。好东西... url是http://sharpdevelop.net/OpenSource/SharpZipLib/ – ckramer

1

我从Codeplex上的自由Iconic Zip有很大的运气。它非常快速地拉链和解压缩,效果很好,尺寸很小。它也适用于Mono。

0

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

对于gzip文件,你可以在System.IO.Compression namespace,或DotNetZip使用流。请注意,如果您有*.tar.gz*.tgz文件,则您需要的内容也可以是tar(1)tar(5)

对于zlib压缩数据,DotNetZip再次是你的朋友。 zlib使用Deflate算法。不过,我不确定zlib 6System.IO.Compression.DeflateStream是否可以兼容。

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

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