К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

System.IO.Compression

Гость
0 - 10.11.2014 - 13:58
Коллеги,может кто сталкивался с такой проблемой:

Для сжатия и распаковки 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 - никакого эффекта.

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



Гость
1 - 10.11.2014 - 14:24
Flush?

http://www.cyberforum.ru/csharp-begi...ead634603.html
Гость
2 - 10.11.2014 - 15:11
1-Я уже натыкался на эту статью. К сожалению, в ней для меня нет ничего полезного - я не читаю из файла, а озвученная там проблема, как я понял, решилась сменой встроенной библиотеки на стороннюю.

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

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


К списку вопросов






Copyright ©, Все права защищены