```
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(buff.Length);

```

As I understand content is flushed when it reaches bufer size in this code 8 bytes. 
So why `buff.Length` returns 12 and why data appears in file only if I explicit call `Dispose/Close`?