正常にBufferedStream動作します-フラッシュされません:閉じstream.Lengthられる8までです。すなわち
// note these should really use "using" statements of similar
FileStream stream = new FileStream("test", FileMode.Create);
BufferedStream buff = new BufferedStream(stream, 8);
BinaryWriter writer = new BinaryWriter(buff);
writer.Write(1);
writer.Write(2);
writer.Write(3);
Console.WriteLine(stream.Length); // 8
Console.WriteLine(buff.Length); // 12
その理由buff.Lengthは、それが基になるストリームの長さ12だからです。基本的には、下のストリームを再公開し、バッファリングされたデータを見逃さないようにするために、バッファリングされたデータがある場合は追加します。BufferedStreamFlush()
public override long Length
{
get
{
this.EnsureNotClosed();
if (this._writePos > 0)
{
this.FlushWrite();
}
return this._stream.Length;
}
}
したがって:
Console.WriteLine(stream.Length); // 8
Console.WriteLine(buff.Length); // 12
Console.WriteLine(stream.Length); // 12
FileStreamは独自のバッファリングも持つことができることに注意してください