трабла с GZipStream при "распаковке"
От: Аноним  
Дата: 16.07.08 08:17
Оценка:
Добрый день.
Не пойму почему не работает 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 ?
Спасибо!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.