i understand that input/output stream is use to take data in bytes whereas reader/writer is character oriented
both of them do the same work (just difference is one is byte oriented and one is char oriented ) so , why java people have made two things that does the same thing ?
apart from this do they have any other advantages ?? if yes please let me know .
As you pointed already out, they don't do the same thing, and there's a reason why. Here are a couple links to more reading that may help you appreciate the reasons for multiple approaches to do similar things: