【发布时间】:2026-02-17 21:15:01
【问题描述】:
我正在尝试使用 GZipStream 类解压缩文件。我使用 GZipStream 的 CopyTo 方法将解压缩的数据写入 MemoryStream 对象。复制到 MemoryStream 对象后,我可以通过查看非公共属性中的 _buffer 来查看数据。
当我尝试写入字节数组时,问题就开始了。调用 Write() 方法会产生一个全为 0 的字节数组,并且 _buffer 属性会变为全 0。我认为这可能是位置或刷新()/关闭()问题,但这并不能解决问题。有人可以告诉我哪里出错了吗?
var input = new MemoryStream(data);
var output = new MemoryStream();
using (var x = new System.IO.Compression.GZipStream(input, System.IO.Compression.CompressionMode.Decompress))
{
x.CopyTo(output);
}
output.Position = 0;
var bytes = new byte[output.Length];
output.Write(bytes, 0, bytes.Length); //All 0's
output.Flush();
output.Close(); //still all 0's
【问题讨论】:
-
var bytes = output.ToArray();带给你什么? -
你不认为
data可能与这个问题有关吗? -
您意识到
output.Write实际上将数据写入您的内存流吗?你在这里从头到尾做。 -
试试... var bytes = output.ToArray();
-
抱歉,您不想阅读而不是写作吗?
标签: c#