A stream is a flow of data that is connected from a data source and arrives at a data destination. You are able to read or write to the stream.

A program that needs to read data needs a Input Stream or Reader. A program that is writing data needs a Output Stream or Writer