1

我正在尝试解压缩 GZipStream。问题是流上的“Length”属性引发了“NotSupported”异常。当我从流中读取字节时,我如何知道缓冲区的大小?由于它是压缩的,我不知道未压缩的版本会有多大。有什么建议么?

4

2 回答 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 回答