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). |
|
|
|
|