Я пытаюсь прочитать в файл и сжать его с помощью GZipStream, как это:сжатия GZipStream не работает
using (var outStream = new MemoryStream())
{
using (var fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
using (var gzipStream = new GZipStream(outStream, CompressionMode.Compress))
{
fileStream.CopyTo(gzipStream);
Debug.WriteLine(
"Compressed from {0} to {1} bytes",
fileStream.Length,
outStream.Length);
// "outStream" is utilised here (persisted to a NoSql database).
}
}
}
Проблема заключается в том, что outStream.Length
всегда показывает 10 байт. Что я делаю не так?
Я пыталась дозвониться gzipStream.Close()
после fileStream.CopyTo
линии (как это было предложено в других форумах), но это, кажется, близко outStream
тоже, так что последующий код, который использует его падает.
Согласно [msdn] [1], нет причин слишком доверять Stream.length proprety, который может быть или не быть реализован. Проверяли ли вы другим способом, что полученный выход неверен? [1]: http://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.length%28v=vs.110%29.aspx – C4stor