GZipStream を解凍しようとしています。問題は、ストリームの「長さ」プロパティが「NotSupported」例外をスローすることです。ストリームからバイトを読み取るときに、バッファーのサイズを確認するにはどうすればよいですか? 圧縮されているため、圧縮されていないバージョンがどのくらいの大きさになるかはわかりません。助言がありますか?
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 に答える