单声道和DeflateStream

时间:2010-03-18 15:30:12

标签: mono deflatestream

我有一个简单的代码

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读取时,我有以下内容:

  

堆栈跟踪:

     

at(包装器托管到原生)   System.IO.Compression.DeflateStream.ReadZStream   (intptr,intptr,int)< 0x00004>

     

at(包装器托管到原生)   System.IO.Compression.DeflateStream.ReadZStream   (intptr,intptr,int)< 0x00004>

     

在   System.IO.Compression.DeflateStream.ReadInternal   (byte [],int,int)[0x00031] in   C:\ cygwin的\ TMP \ monobuild \构建\ BUILD \单2.6.3 \ MCS \类\ SYSTEM \ System.IO.Compression \ DeflateStream.cs:192

     

在   System.IO.Compression.DeflateStream.Read   (byte [],int,int)[0x00086] in   C:\ cygwin的\ TMP \ monobuild \构建\ BUILD \单2.6.3 \ MCS \类\ SYSTEM \ System.IO.Compression \ DeflateStream.cs:214

     

在testtesttest.MainClass.Main   (string [])[0x00041] in   C:\ Users \用户ilukyanov \桌面\卡西尼\ GZipDemo \ Main.cs:27

     

at(wrapper runtime-invoke)   .runtime_invoke_void_object   (object,intptr,intptr,intptr)

     

此应用程序已请求   运行时以异常方式终止它   办法。请联系申请表   支持团队获取更多信息。

此问题出现在Mono 2.6.1& 2.6.3 ...

是否有任何已知的方法可以成功读取Mono中的DeflateStream?或者也许有一些具有相同功能的第三方开源组件?

2 个答案:

答案 0 :(得分:1)

你可以使用Interop和DllImport本地调用zlib 如果你在Unix平台上,唯一的技巧就是在结构中使用正确的大小并在LD_LIBRARY_PATH中包含共享库。

答案 1 :(得分:0)

请提交针对Mono的错误。如果你这样做,可能会及时修复2.6.4。

相关问题