![]() |
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 - никакого эффекта. Как вы думаете, где "порылась собака"? |
Flush? [url]http://www.cyberforum.ru/csharp-beginners/thread634603.html[/url] |
1-Я уже натыкался на эту статью. К сожалению, в ней для меня нет ничего полезного - я не читаю из файла, а озвученная там проблема, как я понял, решилась сменой встроенной библиотеки на стороннюю. Это,разумеется, тоже выход, но я пока хочу "дожать" стандартный Gzip. В любом случае спасибо за помощь. |
Текущее время: 23:35. Часовой пояс GMT +3. |