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.
Originally posted by Spencer Lee: Hello, I wondering if there is an advantage to wrapping streams with BufferedOutputStream before passing it to OutputStreamWriter over simply wrapping the OutputStreamWriter with a BufferedWriter?
There is probably no difference because the buffer sizes for BufferedWriter and BufferedOutputStream are the same (8k in JDK 1.5.0). Wrapping a buffered stream with a buffered writer would not get you any positive benefit for the same reason. Since tweaking IO throughput is very application-dependent, you should look at Java Platform Performance - IO for the details on IO performance and how to measure and test it.
There is probably no difference because the buffer sizes for BufferedWriter and BufferedOutputStream are the same...
However if you are using a charset where more than one byte is frequently converted to a single char, then the boundaries of the two buffers aren't going to match up so nicely any more. Whether this matters I have no idea, though.
Personally I would expect that a buffer between disk and memory would produce more benefits than a buffer between memory and memory. But then I distrust that kind of "explanation", so I would produce the "It depends, try it and see" sort of answer too.