Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GZipStream 
:(
    Опции темы
yarus88
Дата 12.6.2009, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 17.4.2008

Репутация: нет
Всего: нет



Нужно написать функцию Zip и  UnZip с помощью GZipStream.
Код

static byte[] Zip(byte[] mas)
        {
            MemoryStream ms = new MemoryStream();            
            GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Compress, true);
            compressedzipStream.Write(mas, 0, mas.Length);
            byte[] sourseData = ms.ToArray();   
            compressedzipStream.Close();
            ms.Close();
            return sourseData;
        }

Код

        static byte[] UnZip(byte[] mas)
        {
            MemoryStream ms = new MemoryStream();
            GZipStream zipStream = new GZipStream(ms, CompressionMode.Decompress);
            byte[] decompressedBuffer = new byte[mas.Length];
            zipStream.Read(decompressedBuffer, 0, decompressedBuffer.Length);
            zipStream.Close();
            ms.Close();
            return decompressedBuffer;
        }


но результат функции UnZip всега пустой массив...че я не так сделал?
PM MAIL   Вверх
mihryak
Дата 15.6.2009, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



Код

    public static class GZipHelper
    {
        public static byte[] Zip(byte[] sourceBytes)
        {
            using (MemoryStream memoryStream = new MemoryStream())
            using (GZipStream zipStream = new GZipStream(memoryStream, CompressionMode.Compress, true))
            {
                zipStream.Write(sourceBytes, 0, sourceBytes.Length);
                zipStream.Close();

                return memoryStream.ToArray();
            }
        }

        public static byte[] UnZip(byte[] sourceBytes)
        {
            using (MemoryStream inputStream = new MemoryStream(sourceBytes))
            using (GZipStream zipStream = new GZipStream(inputStream, CompressionMode.Decompress))
            using (MemoryStream outputStream = new MemoryStream())
            {
                byte[] buffer = new byte[4096];
                while (true)
                {
                    int n = zipStream.Read(buffer, 0, buffer.Length);
                    if (n == 0)
                    {
                        break;
                    }
                    outputStream.Write(buffer, 0, n);
                }

                return outputStream.ToArray();
            }
        }
    }


во-первых, у тебя выделяется массив неправильного размера - если бы распакованный размер равен запакованному, то зачем тогда вообще паковать?
во-вторых, вовсе не факт, что zipStream.Read(buffer, offset, count) сразу вычитает весь запрошенный count, определённо можно сказать только, что для непустого или ещё не опустошённого источника будет позвращаться не 0 байт


PM MAIL ICQ   Вверх
Conkistador
Дата 15.6.2009, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 3.6.2009

Репутация: 2
Всего: 2



mihryak, если не ошибаюсь то этот пример был даже в хелпе.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0402 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.