1

以下のコードを呼び出して 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 であることと関係がありますか?

4

0 に答える 0