Java input and output is defined in terms of an abstract concept called a “stream”, which is a sequence of data. There are 2 kinds of streams. Byte streams (8 bit bytes) -> Abstract classes are: InputStream and OutputStream Character streams (16 bit UNICODE) -> Abstract classes are: Reader and Writer Design pattern: java.io.* classes use the decorator design pattern. The decorator design pattern attaches responsibilities to objects at runtime. Decorators are more flexible than inheritance because the inheritance attaches responsibility to classes at compile time. The java.io.* classes use the decorator pattern to construct different combinations of behavior at … Click here to continue…..