1

GZipStream を解凍しようとしています。問題は、ストリームの「長さ」プロパティが「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 に答える