This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
It's not a question of efficiency, it's a question of functionality. Streams work with binary data, while Readers (and Writers) work with character data. If binary data can be converted to character data (and not all binary data can), then you'll need to consider the encoding that was used to convert the character data to binary data in the first place.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com