Listing main byte stream classes should include
- two class hierarchies: one for input and one for output
- two abstract classes at the top of each class hierarchy (from which are derived concrete subclasses that handle details of reading from and writing to various devices):
- InputStream—defines characteristics common to byte input streams
- OutputStream—defines characteristics common to byte output stream.
Listing character stream classes should include
- two class hierarchies: one for input and one for output
- two abstract classes, at the top of input and output hierarchies, whose concrete subclasses operate on Unicode character streams:
- Reader is used for input.
- Writer is used for output.
In general, the character-based classes parallel the byte-based classes.