Java.IO.InputStream-OutputStream

InputStream
int read()從數據流中讀取一個字節,如果讀不到會阻塞

int read(byte[] b)從數據流中讀取字節放入字節數組並返回實際讀取的字節數。最多讀取的字節長度是這個字節數組的長度

int read(byte[] b,int off, int len)從數據流中讀取len個字節字節數組的off下標開始存入字節數組

long skip(long n)主要用在包裝流中的。流只能順序讀不能跳躍讀,但是包裝流可以用skip方法跳躍讀取

int available()返回當前數據流中可讀取的字節數。在讀取之前用available()判斷數據流中是否有數據字節

void mark(int readlimit) 用在輸入流中建立一個標記,建立標記以後,mark方法接收一個參數從標記開始最多讀取readlimit個字節

void reset()與mark配合使用,讓指針回到以前標記處,例如建立標記a,讀出n個字節後調用reset(),讀取數據仍然從標記a處開始
boolean markSupported()返回當前流對象是否支持mark和reset方法

void close()用於完成一個流的所有操作後關閉流,以釋放與這個流相關的資源

InputStream類是一個抽象類,程序中實際使用的是InputStream類的各種子類對象,不是所有的子類都支持InputStream所提供的所有方法,比如mark,skip,reset方法對節點流就不適用,只適用於包裝類

有了垃圾回收期,爲什麼還要調用close方法:當程序創建了一個IO流對象的同時,也創建了一個叫流的東西,計算機內存中產生了兩個東西,一個是java程序的類實例對象,一個是系統產生的某種資源。垃圾回收器只管理程序當中的類實例對象,不會管理系統產生的資源。所以用close方法通知系統釋放這個對象所表示的流資源。

OutputStream
程序可以向其中連續寫入字節的對象叫輸出流,在java中用OutputStream類來描述所有輸出流的抽象概念,也是一個抽象類。描述了流類寫入數據時的通用方法

outputStream類的方法:
void write(int b) 就是將一個整數中的最低一個字節的內容寫入到輸出流中,最高字節部分被捨棄。
void write(byte[] b)將字節數組當中的所有字節內容都寫入到輸出流對象中
void write(byte[] b,int off,int len)
void flush用於將內存緩衝區當中的內容徹底的清空並輸出的IO輸出設備中:提高了內存的使用率,write方法並沒有真正的寫入到IO設備,還有機會撤回部分寫入的數據,使用緩衝區能提高計算機的效率,會降低程序自身的效率。在網絡流中會造成一些數據的滯後,這樣就降低了他的實時性效率。


對於InputStream輸入流中也可以使用flush方法,用於將目標設備中一次將大量的數據讀取到內存緩存區中,然後在緩存區中一行一行的讀取到流中來

即使內存區數據沒有存滿,仍然可以調用flush方法將緩衝數據強制寫入到外部設備習慣上稱這個過程爲刷新不是所有的Outputstream的子類都支持flush方法,只有那些個使用了緩存區的子類才能使用這個方法
當調用void close()方法,關閉輸出流時緩存區中的內容也會輸出到目標設備中

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章