前面學習ByteArrayInputStream,了解了“輸入流”。接下來,我們學習與ByteArrayInputStream相對應的輸出流,即ByteArrayOutputStream。
本章,我們會先對ByteArrayOutputStream進行介紹,在了解了它的源碼之後,再通過示例來掌握如何使用它。
ByteArrayOutputStream 是位元組數組輸出流。它繼承于OutputStream。
ByteArrayOutputStream 中的資料被寫入一個 byte 數組。緩沖區會随着資料的不斷寫入而自動增長。可使用 toByteArray() 和 toString() 擷取資料。
OutputStream 函數清單
我們來看看ByteArrayOutputStream的父類OutputStream的函數接口。


ByteArrayOutputStream 函數清單


OutputStream是ByteArrayOutputStream的父類,我們先看看OutputStream的源碼,然後再學ByteArrayOutputStream的源碼。
1. OutputStream.java源碼分析(基于jdk1.7.40)


2. ByteArrayOutputStream 源碼分析(基于jdk1.7.40)


說明:
ByteArrayOutputStream實際上是将位元組資料寫入到“位元組數組”中去。
(01) 通過ByteArrayOutputStream()建立的“位元組數組輸出流”對應的位元組數組大小是32。
(02) 通過ByteArrayOutputStream(int size) 建立“位元組數組輸出流”,它對應的位元組數組大小是size。
(03) write(int oneByte)的作用将int類型的oneByte換成byte類型,然後寫入到輸出流中。
(04) write(byte[] buffer, int offset, int len) 是将位元組數組buffer寫入到輸出流中,offset是從buffer中讀取資料的起始偏移位置,len是讀取的長度。
(05) writeTo(OutputStream out) 将該“位元組數組輸出流”的資料全部寫入到“輸出流out”中。
關于ByteArrayOutputStream中API的詳細用法,參考示例代碼(ByteArrayOutputStreamTest.java):


運作結果:
baos=ABC
baos=ABCdefgh
size=8
str=ABCdefgh
baos2=ABCdefgh