我正在尝试解压缩 GZipStream。问题是流上的“Length”属性引发了“NotSupported”异常。当我从流中读取字节时,我如何知道缓冲区的大小?由于它是压缩的,我不知道未压缩的版本会有多大。有什么建议么?
问问题
306 次
2 回答
4
你为什么需要那个?
public static byte[] Decompress(this byte[] data)
{
var ms = new MemoryStream(data);
var s = new GZipStream(ms, CompressionMode.Decompress);
var output = new MemoryStream();
byte[] buffer = new byte[8192];
int read = 0;
while ((read = s.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, read);
}
return output.ToArray();
}
于 2009-06-11T06:25:52.787 回答
0
根据您要使用它执行的操作,您可以将未压缩的内容写入 MemoryStream 或 FileStream。它们都可以设置为根据需要扩展它们的缓冲区。
MemoryStream 还有一个 ToArray 方法,可以将其内容提取为字节数组。
于 2009-06-11T06:29:05.043 回答