Hi Atin,
Let us first consider your question on why IO is required at all.
Input Output (IO) is basically communication between a computer and its users, its storage devices or other computers through networks. Every programming language provides some way of enabling programs to use IO facilities of the underlying platform in all the above flavors.
One most important use of IO is to enable storage of data that is processed in programs. Storage of data in variables and arrays is temporary, the data is lost when the local variables go out of scope.
Java provides a framework for data IO called "streams".A stream is an abstraction that either produces or consumes information. To bring-in data from some external source we use input streams. To send out data to some external source we use output streams. Note here that we have just been talking about sending-out and bringing-in data to or from some 'source'. The source can be any datasource like a file,socket,memory etc. That is the advantage Java IO streams, we need not be concerned too much on what kind of data sources we are working upon but concentrate on how we do the data transfer.
The first step in making our way through the maze of Java IO streams is to to understand how they are organized. You will find the "Lesson: Reading and Writing (but no 'rithmetic)" [Trail: Essential Java Classes] of Sun's Java Tutorial very useful for this purpose. You need to give atleast 3 rounds of studying this tutorial to begin recognizing the excellent way these streams are organized.
Once you have done that, if you have any further queries on specific methods in Java IO or any question is too tricky, please post it to this forum and any of the participants would be able to help you.
Hope this helps you get started with Java IO.
Best wishes,
Balu