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. В любом случае спасибо за помощь. | |
| Интернет-форум Краснодарского края и Краснодара |