天天看點

BufferedOutputStream用法

BufferedOutputStream這個類其實很簡單,主要是裡面包含了一個8192個位元組的緩沖區,可能随着以後版本的變化大小也會變化。new BufferedOutputStream(OutputStream out)這個構造函數預設配置設定的就是8192個位元組的byte[]數組,即緩沖區,如果要自己配置設定緩沖區大小可以調用構造函數new BufferedOutputStream(OutputStream   out,    int   count)。count指的是緩沖區大小。在這裡重點講一下 public synchronized void write(byte[] buffer, int offset, int length) throws IOException {},這個方法是BufferedOutputStream裡面的加鎖方法(某個時間隻能有一個地方能通路它),從源碼可以發現這個方法實際寫入操作還是調用OutputStream 裡面的write方法,這個方法是與硬體互動寫入資料。

如果要寫入的資料大于緩沖區大小,直接用OutputStream 把資料寫進去,用OutputStream 寫進去的資料沒有經過緩沖區,不用flush()也能實時看得到,不像字元流有緩沖區。

如果緩沖區剩餘大小不夠(寫進去的資料不是很大),則把緩沖區的資料寫進去,也就是清空緩沖區,之後再把要寫入的資料寫進緩沖區。

還用一種情況是緩沖區有足夠的剩餘空間存儲要寫入的資料,則把要寫入的資料放在已寫在 緩沖區的資料的後面。