BufferedOutputStream vs ByteArrayOutputStream

2019-03-23 02:08发布

问题:

Is there any advantage in wrapping a BufferedOutputStream around a ByteArrayOutputStream instead of just using the ByteArrrayOutputStream by itself?

回答1:

Generally BufferedOutputStream wrapper is mostly used to avoid frequent disk or network writes. It can be much more expensive to separately write a lot of small pieces than make several rather large operations. The ByteArrayOutputStream operates in memory, so I think the wrapping is pointless.

If you want to know the exact answer, try to create a simple performance-measuring application.



回答2:

Absolutely none. Though BufferedWriter and BufferedReader do offer extra functionality were you to be operating on strings.



回答3:

ByteArrayOutputStream is not recommended if you want to get high performance, but one interesting feature is to send a message with unknown length. For a better comprehension about how these two methods work, see http://java-performance.info/java-io-bytearrayoutputstream/.