Buffered Streams
The output buffered streams write to their internal buffer until it becomes full. Then, the content of the buffer is written to the stream element that was registered in the buffered stream at construction time.
The input buffered streams read from their internal buffer until it becomes empty. Then, they try to read elements (up to the buffer size) using the stream element that was registered in the buffered stream at construction time.
The buffered streams are available in every stream family except for the data streams. The data streams in the Streams package do not have a terminal stream, but always forward to a stream element of one of the other family types. The data streams do not require their own buffered streams, because they are not terminal elements.
The buffered stream classes for the input streams are named RWBuffered{TYPE}InputStreamImp, and the buffered stream classes for the output streams are named RWBuffered{TYPE}OutputStreamImp, where {TYPE} is one of the following:
*Byte
*Char
*UChar
*WChar
Your application manipulates the concrete stream classes only when they are created. After creation, the concrete stream classes are manipulated through their corresponding handle classes.