我有一个简单的代码
byte[] buffer = Encoding.UTF8.GetBytes("abracadabra");
MemoryStream ms = new MemoryStream();
DeflateStream ds = new DeflateStream(ms, CompressionMode.Compress, false);
ms.Write(buffer, 0, buffer.Length);
DeflateStream ds2 = new DeflateStream(ms, CompressionMode.Decompress, false);
byte[] buffer2 = new byte[ms.Length];
ds2.Read(buffer2, 0, (int)ms.Length);
Console.WriteLine(Encoding.UTF8.GetString(buffer2));
从 ds2 读取时,我有以下内容:
堆栈跟踪:
在(包装器托管到本机)System.IO.Compression.DeflateStream.ReadZStream(intptr,intptr,int)<0x00004>
在(包装器托管到本机)System.IO.Compression.DeflateStream.ReadZStream(intptr,intptr,int)<0x00004>
在 C:\cygwin\tmp\monobuild\build\BUILD\mono-2.6.3\mcs\class\System\System 中的 System.IO.Compression.DeflateStream.ReadInternal (byte[],int,int) [0x00031]。 IO.Compression\DeflateStream.cs:192
在 C:\cygwin\tmp\monobuild\build\BUILD\mono-2.6.3\mcs\class\System\System 中的 System.IO.Compression.DeflateStream.Read (byte[],int,int) [0x00086]。 IO.Compression\DeflateStream.cs:214
在 C:\Users\ilukyanov\Desktop\Cassini\GZipDemo\Main.cs:27 中的 testtesttest.MainClass.Main (string[]) [0x00041]
在(包装器运行时调用).runtime_invoke_void_object(对象,intptr,intptr,intptr)
此应用程序已请求运行时以不寻常的方式终止它。请联系应用程序的支持团队以获取更多信息。
这个问题出现在 Mono 2.6.1 & 2.6.3...
有没有已知的方法可以在 Mono 中成功读取 DeflateStream?或者也许有一些具有相同功能的第三方开源程序集?