У меня есть простой код
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 у меня есть следующее:
StackTrace:
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] в
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] в
C: \ Cygwin \ TMP \ monobuild \ сборка \ BUILD \ моно-2.6.3 \ MCS \ класс \ System \ System.IO.Compression \ DeflateStream.cs: 214
на testtesttest.MainClass.Main
(строка []) [0x00041] в
C: \ Users \ ilukyanov \ Desktop \ Кассини \ GZipDemo \ Main.cs: 27
at (запуск-вызов оболочки)
.runtime_invoke_void_object
(объект, intptr, intptr, intptr)
Это приложение запросило
Время выполнения, чтобы прекратить его в необычном
путь. Пожалуйста, свяжитесь с приложением
Команда поддержки для получения дополнительной информации.
Эта проблема появляется в Mono 2.6.1 и 2.6.3 ...
Есть ли какой-нибудь известный способ успешного чтения из DeflateStream в Mono? Или, может быть, существуют сторонние сборки с открытым исходным кодом с такой же функциональностью?