I/OCreateing a good input/ouput (I/O) system is one of the most difficult tasks for a language designer. This is evidenced by the number of different approaches.The challenge seems to be in covering all possibilities. Not only are there differentsources and sinks of I/O that you want to communicate with(files,the console,networkconnections, etc.),but you need to talk to them in a whide variety of ways(sequential,random-access,buffered,binary,character, by lines,by words,etc.).
The File classTypes of InputStreamInputStream's job is to represent classes that produce input from different sources. These sources can be:1. An array of bytes.2. A String object.3. A file.4. A "pipe",which works like a physical pipe: You put things in at one end and they comeout the other.5. A sequence of other streams, so you can collect them together into a single stream.6. Other sources, such as an Internet connection. (This is covered in Thinking in Enterprise Java.
ByteArrayInputStream,StringBufferInputStream,FileInputStream,pipedInputStream,SequenceInputStream,
FilterInputStream: Abstract class that is an interface for decorators that provide useful functionality to the other InputStream classes.