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
是因为即底层流的长度。基本上,BufferedStream
只是重新暴露出下面的流,并确保不会错过它增加了一个Flush()
缓冲数据如果有缓冲的数据:
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
也可以有自己的缓冲区
这里是什么? –
它应该是buff,sry – asdas