This type buffers read and write operations to a stream. Because the I/O devices are usually the slowest part of the machine, it usually makes sense to write larger amounts of data at a time, so buffering can improve I/O performance dramatically.

Note that many of the Stream-based types automatically buffer data or represent resources that also buffer data, not only in the System.IO namespace, but also in other namespaces. For example, the filesystem usually has several buffers in place at various levels. This type, however, offers some optimization capabilities, since data won’t be sent to the underlying Stream until this object’s buffer is full. This can help with accidental flushing in the middle of sensitive operations, such as a tightly executing loop.

public sealed class BufferedStream : Stream {
// Public Constructors
   public BufferedStream(Stream stream);
   public BufferedStream(Stream stream, int bufferSize);
// Public Instance Properties
   public override bool CanRead{get; }   
// overrides Stream
   public override bool CanSeek{get; }   
// overrides Stream
   public override bool CanWrite{get; }  
// overrides Stream
   public override long Length{get; }    
// overrides Stream
   public override long Position{set; get; }          
// overrides Stream
                  // Public Instance Methods
   public override void Close( );         
// overrides Stream
   public override void Flush( );         
// overrides Stream
   public override int Read(in byte[ ] array, int offset, int count)
// overrides Stream public override ...

Get C# in a Nutshell, Second Edition now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.