Low-level and high-level stream classes | Managing Input/Output Files in Java

Low-level and high-level stream classes
At its lowest level, all Java I/O involves a stream of bytes either entering or leaving memory as shown by this diagram:
Obviously, sending and receiving individual bytes would be tedious and difficult for an application to manage. For that reason, several packaged classes exist that make it easy for a program to read and write larger units of data.
Most programs use a “high-level” stream class object that is “chained” (connected) to a “low-level” stream class object. While the low-level stream class object handles byte I/O, the high-level stream class object will allow the program to read and write primitive data values and even objects (as shown below).
There are many stream classes, but you will only be required to know the ones that are highlighted below: