Добрый день.
Не пойму почему не работает 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 ?
Спасибо!!