c#中的java.util.zip.deflater等价物

时间:2011-06-29 14:59:41

标签: c# java equivalent deflate inflate

有谁知道如何在.NET中实现java的Deflater.deflate()功能,以便java的Infalter.inflate()方法可以理解?

的问候, 拉法尔

4 个答案:

答案 0 :(得分:3)

检查System.IO.Compression命名空间。它有DeflateStream。 DeflateStream使用Deflate算法进行压缩,java.util.zip.deflater也是如此。因此,您可以使用.NET进行压缩并使用Java实现进行解压缩,反之亦然。

答案 1 :(得分:3)

DotNetZip包中的ZlibStream类(https://dotnetzip.codeplex.com/)等同于java.util.zip.deflater。

Nuget:Install-Package DotNetZip

字节数组的用法:

ZlibStream.CompressBuffer(dataBytesArray);

ZlibStream.UncompressBuffer(dataBytesArray);

它还具有String压缩和解压缩功能,并且该类可以与.NET DefalteStream完全相同的方式使用。请注意,DotNetZip的DeflateStream与它的Java不一样,ZlibStream是。

其他信息: .NET的DeflateStream与Java中的Deflate不兼容。实际上,Java使用Zlib并默认添加2-6字节头和4字节校验和。切断字节(由http://blogs.msdn.com/b/bclteam/archive/2007/05/16/system-io-compression-capabilities-kim-hamilton.aspx等一些文章建议)将起作用,但我不建议它,因为解析标题长度可能会导致错误。

我不建议使用SharpZipLib,因为它是纯C#,通常性能对压缩和解压缩数据很重要。看http://www.codeproject.com/Articles/434583/SharpZipLib-or-DotNetZip-Which-should-you-use

答案 2 :(得分:2)

我使用过#zipLib。这很直接。

取自他们的网站:

  

#ziplib(SharpZipLib,以前的NZipLib)是一个完全用C#编写的用于.NET平台的Zip,GZip,Tar和BZip2库。它作为一个程序集实现(可在GAC中安装),因此可以很容易地合并到其他项目中(在任何.NET语言中)。 #ziplib的创建者这样说:“我已经将zip库移植到C#,因为我需要gzip / zip压缩,我不想使用libzip.dll或类似的东西。我希望所有的纯C# 。“

答案 3 :(得分:0)

ZipPackage Class

GZipStream Class

这可能会有所帮助,但我不知道它们使用起来有多容易,或者与java兼容(对不起,这不是一个好的答案)。

http://blogs.msdn.com/b/bclteam/archive/2010/06/28/working-with-zip-files-in-net.aspx

中有一篇关于zip内容的好文章

或者c#的一些开源zip实用程序。