There are too many java.io classes, for some of them i really dont understand when we need them, for example:
ByteArrayInputStream, ByteArrayOutputStream
SequenceInputStream,
PushbackInputStream, PushbackReader
StringReader...
I mean some real-life usages
Can someone please explain...
I would say that your question is too wide.
However it is possible to give a very basic overview of
java.iopackage. It contains interfaces and classes for data input and output operations, such as reading bytes from file. There are only few basic interfaces / classes:DataInput/ObjectInput- readig Java primitives and objectsDataOutput/ObjectOutput- writing Java primitives and objectsInputStream- reading individual bytesOutputStream- writing individial bytesReader- reading character dataWriter- writing character dataThere are other useful interfaces (like
Closeable), but these are less significant.It is best if you read the JavaDoc of these classes. Some examples:
FileOutputStreamto write something into a file.OutputStreamWriter.byte[]and want to read from it just like fromInputStream? UseByteArrayInputStream.PushbackReader.Stringand want to read from it just like fromReader? UseStringReader.So if you need some specific stream/reader/writer, check
java.iopackage, search the internet and ask a question on SO if needed.Of course then there is
java.niopackage, which you should know about. But that is for a different topic.