•Buffering can
be done for every stream.
•You can
filter any I/O stream to provide a layer between
input and output.
•Data of
different primitive types can be read/written
with DataInputStreams.
•PrintStream
is used for terminal type textual representation
of data.
•There are I/O
wrappers for arrays and Strings as well.