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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> трабла с GZipStream при "распаковке" 
:(
    Опции темы
Demokratizator
Дата 16.7.2008, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Добрый день.
Не пойму почему не работает Decompress в таком коде:

Код

    FileStream fileSourseStream = new FileStream(@"file.file", FileMode.Open, FileAccess.Read, FileShare.Read);
    MemoryStream memoryStream = new MemoryStream();

    byte[] buffer = new byte[fileSourseStream.Length];
    int count = fileSourseStream.Read(buffer, 0, buffer.Length);
    fileSourseStream.Close();

    // архивируем
    GZipStream compressedzipStream = new GZipStream(memoryStream, CompressionMode.Compress, true);
    compressedzipStream.Write(buffer, 0, buffer.Length);
    compressedzipStream.Close();

    byte[] sourseData = memoryStream.ToArray();

    // обратно
    MemoryStream CompressionStream = new MemoryStream();
    GZipStream decompressedzipStream = null;

    CompressionStream.Write(sourseData, 0, sourseData.Length);
    decompressedzipStream = new GZipStream(CompressionStream, CompressionMode.Decompress);

    byte[] destinationData = new byte[sourseData.Length + 1000];
    int offset = 0;
    while (true)
    {
         int bytesRead = decompressedzipStream.Read(destinationData, offset, 100);  //тут 0 всегда считывается
         if (bytesRead == 0)
                    break;
         offset += bytesRead;
    }


а если в
decompressedzipStream = new GZipStream(CompressionStream, CompressionMode.Decompress);
переделать в
decompressedzipStream = new GZipStream(memoryStream, CompressionMode.Decompress);

то все ок.
а как сделать чтоб сначала архивный memoryStream в массив байт, потом например его передать клиенту (клиент-серверное приложение), а потом уже из массива байт обратно в memoryStream ?
Спасибо!!
PM MAIL   Вверх
Partizan
Дата 16.7.2008, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



Demokratizator, MemoryStream.GetBuffer вернёт byte[] ассоциированный с MemoryStream...

для преобразования byte[] в MemoryStream можно либо записать этот массив в буффер существующего объекта MemoryStream или создать новый объект MemoryStream, передав в конструктор byte[]


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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