以下のコードを呼び出して inflater.Position を設定しようとしています:
Stream data = Compress(buffer); // data: length=12, position=12
//inflater: length=0, position=12
InflaterInputStream inflater = new InflaterInputStream(data);
inflater.IsStreamOwner = false;
// move forward:
inflater.Dispose();
data.Position = 0;
inflater = new InflaterInputStream(data); // inflater.position=0
inflater.IsStreamOwner = false;
byte[] buff = new byte[newPos - Position];
while(newPos > Position)
int count = inflater.Read(buff, 0, buff.Length); //inflater.position=12
今、前進しようとすると、位置は常に元の値のままです。Read メソッドに入力した長さに関係なく、メソッドは常にストリーム全体を読み取るため、位置 = ストリームの終わりですか? inflater.Position を設定するにはどうすればよいですか?
フォローアップ: インフレータの長さが 0 なのはなぜですか? CanWrite プロパティが false であることと関係がありますか?