# what is 'stream'?
Stream represents any data source or sink as an object capable of producing or receiving pieces of data.
#inputStream
To produce input from different sources.
# Types of InputStream
ByteArrayInputStream: allows a buffer in memory to be used as an inputStream.
StringBufferInputStram: converts a String into an inputStream.
FileInputStream: For reading info from a file.
PipedInputStream: produces the data that's being written to the associated PipedOutputStream.
SequenceInputStream: Combine 2 or more InputStream objects into a single.
FilterInputStream: abstract class that is an interface for decorators.
--> types of outputStream is similar to inputStream.
# types of FilterInputStream
DataInputStream: used to read primitives(int, char, long, etc.) from a stream.
BufferInputStream: to use a buffer instead of physical read every time you want more data.
LineNumberInputStream: keep track of line number in the inputStream.
PushbackInputStream: ...
...