Search code examples
java.netcompressionzlibdeflate

How to decompress stream deflated with java.util.zip.Deflater in .NET?


I have a dump after java.util.zip.Deflater (can confirm it's valid because Java's Inflater opens it fine) and need to open it in .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);

This throws

System.IO.InvalidDataException : Block length does not match with its complement.

Tried Ionic.Zlib.DeflateStream - similar exception. How can i do that?

The dump starts with 97 86 E8 92 47 3D 40 EA (if that matters).

Update: Unfortunately, i have no control over Java party as the system is in production.


Solution

  • Since you have no control over the Java output, how about integrating some J# in your .NET app in order to use java.util.zip.Inflater directly? See this MSDN article.

    This similar question might also be helpful, particularly the suggestion of #zipLib.