如何用.NET中的java.util.zip.Deflater解压缩流?

时间:2011-12-13 14:19:02

标签: java .net compression zlib deflate

我在java.util.zip.Deflater之后有一个转储(可以确认它是有效的,因为Java Inflater打开它很好)并且需要在.NET中打开它:

byte[] content = ReadSample(sampleName);
var input = new MemoryStream(content);
var output = new MemoryStream();

using (var z = new System.IO.Compression.DeflateStream(input, CompressionMode.Decompress, true))
        z.CopyTo(output);

抛出

  

System.IO.InvalidDataException:块长度与其不匹配   补。

尝试Ionic.Zlib.DeflateStream - 类似的例外情况。我怎么能这样做?

转储以97 86 E8 92 47 3D 40 EA(如果重要)开始。

更新:不幸的是,由于系统正在投入生产,我无法控制Java派对。

3 个答案:

答案 0 :(得分:1)

要解决平台相关的压缩和解压缩,请使用

<强>方法-1

在.NET中,您可以使用System.IO.Compression.GZipStream

在Java中使用 java.util.zip.GZIPOutPutStream

<强>方法-2

您也可以使用7-zip。有一个适用于c#和Java的SDK。

答案 1 :(得分:1)

由于您无法控制Java输出,如何在.NET应用程序中集成一些J#以直接使用java.util.zip.Inflater?请参阅this MSDN article

This similar question也可能有所帮助,尤其是#zipLib的建议。

答案 2 :(得分:0)

我不相信Deflater和Inflater是标准格式,如果它在Java和C#中是相同的,我会感到惊讶。

我建议您使用标准格式,例如GZIP,它应该在不同平台上相同。