【发布时间】:2013-12-06 12:06:40
【问题描述】:
我正在尝试读取文件并使用 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 个字节。我做错了什么?
我尝试在fileStream.CopyTo 行之后调用gzipStream.Close()(如其他论坛中所建议的那样),但这似乎也关闭了outStream,因此使用它的后续代码会失败。
【问题讨论】:
-
根据 [the msdn][1] 没有理由过于信任 Stream.length 属性,它可能会或可能不会实现。您是否通过其他方式检查获得的外流不正确? [1]:msdn.microsoft.com/en-us/library/…
标签: c# gzipstream