protected byte[] buf | 用於保存由該流的建立者提供的 byte 數組 也就是構造方法傳入 |
protected int count | 個數 |
protected int mark | 流中當前的標記位置 構造時默認將 ByteArrayInputStream 對象標記在位置零處 經過 mark() 方法可將其標記在緩衝區內的另外一個位置處 經過 reset() 方法將當前緩衝區位置設置爲此點 protected int mark = 0;定義時設置了默認值,若是不設置將爲0 |
protected int pos | 要從輸入流緩衝區中讀取的下一個字符的索引 |
帶參數的read()方法 將數據讀取到b的off位置處
//從流中讀取數據到b[] 中,從off開始寫,寫len長度 public synchronized int read(byte b[], int off, int len) { if (b == null) {//若是b爲null 空指針 throw new NullPointerException(); } else if (off < 0 || len < 0 || len > b.length - off) {//若是偏移量小於0 或者寫入長度小於0 或者想要讀取的長度小於實際的長度了 throw new IndexOutOfBoundsException(); } if (pos >= count) {//若是位置光標已經到了最後了,沒有數據可讀,返回-1 return -1; } int avail = count - pos;//可用個數爲總個數count - 當前位置pos if (len > avail) {//若是想要讀取的len比實際擁有的數據要長,那麼只讀取實際的個數 len = avail; } if (len <= 0) { return 0; } System.arraycopy(buf, pos, b, off, len);//使用本地方法拷貝數據 buf 的pos位置開始拷貝,拷貝len個,到b的off位置 pos += len;//位置光標後移 return len; }
|
![]() |
![]() |
ByteArrayInputStream的根本在於針對給定的某個字節數組,提供IO操做方式的統一形式 就好像你寫了個方法操做字節數組同樣,徹底不涉及資源 因此無需關閉任何實質內容 |
經過close關閉ByteArrayInputStream以後,若是再次使用這個流 並不會拋出異常 固然,流結束了,就不能再繼續使用了 |
protected byte buf[]; |
存儲數據的緩衝區 |
protected int count; |
緩衝區中的有效字節數,每次寫入將會寫入到buf[count]處 |
public ByteArrayOutputStream() ;
|
默認長度爲32位![]() |
public ByteArrayOutputStream(int size) | 只要參數值合法,建立指定個數的字節數組緩衝區![]() |
write(int) | 將指定的字節寫入此 byte 數組輸出流 也就是寫入到內部的字節數組中 |
write(byte[], int, int) | 將指定 byte 數組中從偏移量 off 開始的 len 個字節寫入此 byte 數組輸出流 也就是寫入到內部的字節數組中 |
由於ByteArrayOutputStream內部維護的是一個字節數組,因此能夠直接做爲OutputStream中write()方法的參數 代碼很簡單,就是講內部的字節數組,轉存到入參指定的輸出流中 至關於把流中的數據重寫了一份到另外的輸出流 |
![]() |
計算機全部的數據都是二進制存儲,最小的單位是字節,字符的編碼形式也正是字節 因此,toString其實就是把字節序列進行解碼 |
![]() int類型入參的方法,在JDK1.8 已經棄用 |
toString()使用平臺默認的字符集,經過解碼字節將緩衝區內容轉換爲字符串
toString(String charsetName) 使用指定的 charsetName,經過解碼字節將緩衝區內容轉換爲字符串
|
reset是重置的意思,ByteArrayOutputStream 使用buf[] 存儲數據,使用count指示位置 因此想要從新使用如今的緩衝區,拋棄原來全部的,只須要將count清零,每次的數據從新從0開始寫入字節數組便可 |
![]() |
反正咱們知道如今總共有多少有效字節,原來寫入到buf中的可能多於count的那些字節就放着好了,咱們也不去使用 |
轉換爲字節數組,它自己就是一個字節數組 因此轉換比較簡單,只須要建立一個大小相同的字節數組,而且將數據拷貝過去便可 |
![]() |