Форум на Kuban.ru (http://forums.kuban.ru/)
-   Разработка программ (http://forums.kuban.ru/f1024/)
-   -   System.IO.Compression (http://forums.kuban.ru/f1024/system_io_compression-6256813.html)

LostDaemon 10.11.2014 13:58

System.IO.Compression
 
Коллеги,может кто сталкивался с такой проблемой:

Для сжатия и распаковки string, содержащей XML данные использую стандартный дотнетовский GZipStream:

public static string Compress(string value)
**
Byte[] byteArray = new byte[0];
if (!string.IsNullOrEmpty(value))
**
byteArray = Encoding.UTF8.GetBytes(value);
using (MemoryStream stream = new MemoryStream())
**
using (GZipStream zip = new GZipStream(stream, CompressionMode.Compress))
**
zip.Write(byteArray, 0, byteArray.Length);
**
byteArray = stream.ToArray();
**
**
return System.Text.Encoding.UTF8.GetString(byteArray);
**




public static string Decompress(string value)
**
byte[] gzip = Encoding.UTF8.GetBytes(value);
string resultString = string.Empty;
if (gzip != null && gzip.Length > 0)
**
using (MemoryStream stream = new MemoryStream(gzip))
using (GZipStream zip = new GZipStream(stream, CompressionMode.Decompress))
using (StreamReader reader = new StreamReader(zip))
**
resultString = reader.ReadToEnd();
**
**
return resultString;
**


Введенный вручную простой текст прекрасно распаковывается и запаковывается, но при работе со строкой, содержащей структурированные данные в XML (~6 Кбайт), в процессе распаковки, по какой то причине на строке resultString = reader.ReadToEnd(); выбрасывается исключение:

"System.IO.InvalidDataException: Неправильное магическое число в заголовке GZip. Передача должна идти в поток GZip.
"

Сначала грешил на кодировку, менял на ASCII, Unicode - никакого эффекта.

Как вы думаете, где "порылась собака"?

40KHYTbIU 10.11.2014 14:24

Flush?

[url]http://www.cyberforum.ru/csharp-beginners/thread634603.html[/url]

LostDaemon 10.11.2014 15:11

1-Я уже натыкался на эту статью. К сожалению, в ней для меня нет ничего полезного - я не читаю из файла, а озвученная там проблема, как я понял, решилась сменой встроенной библиотеки на стороннюю.

Это,разумеется, тоже выход, но я пока хочу "дожать" стандартный Gzip.

В любом случае спасибо за помощь.


Текущее время: 20:33. Часовой пояс GMT +3.