Read original post at Kraig Brockschmidt's Blog
Question #2: My God, what are all those different stream types about?
Answer: Trust me, I feel your pain. That's why I'm writing this post! There are a bunch of classes and interfaces for streams, so let's sort them out.
A stream is just an abstraction for a bit bucket. Streams don't make any distinction about the data in those buckets, only about how you can get to those bits. Streams are used to access file contents, pass information over sockets, talk to devices, and so forth.