Java defines the concept of a stream as an interface to a data source; it comes in two forms:
Input Streams
Output Streams
Input streams represent sources that you can read data from and output streams represent sources that you can write data to. To further subdivide the types of data that can be read from streams Java defines streams that read byte data and streams that read character data. Byte data would represent binary data such as images, whereas character data would represent readable text such as HTML pages or text files.