Следуя различным примерам, я смог преобразовать поток памяти в сжатый поток, а затем в массив байтов для сохранения в базе данных, но у меня возникли проблемы с другим путем. Вот что у меня пока есть...
...
using (MemoryStream compressedStream = new MemoryStream()) {
...some code that builds the compressedStream for an undetermined
number of byteArrays from a database
using (MemoryStream uncompressedStream = new MemoryStream()) {
// method 1
using (GZipStream unzippedStream = new GZipStream(compressedStream, CompressionMode.Decompress)) {
unzippedStream.CopyTo(uncompressedStream);
}
// method 2
using (GZipStream unzippedStream = new GZipStream(uncompressedStream, CompressionMode.Decompress)) {
compressedStream.CopyTo(unzippedStream);
}
... do something with uncompressedStream
}
}
Метод 1 соответствует примерам, которые я вижу здесь, но вызывает ошибку «поток не поддерживает запись».
Метод 2 имеет больше смысла, но несжатый поток всегда пуст.
P.S. На самом деле то, что я хотел бы иметь, это что-то простое, например
MemoryStream compressed = GZipStream(uncompressed, Compress)
MemoryStream upcompressed = GZipStream(compressed, Decompress)
MemoryStream
из вашегоbyte[]
, передайте этот поток вGZipStream
, а затем прочитайте изGZipStream
. - person Peter Duniho   schedule 26.07.2016