InputStream 和 OutputStream 對於字節流的輸入和輸出
是作為協議的存在
所以有必要了解下這兩個類提供出來的基本約定
這兩個類是抽象類,而且基本上沒什么實現,都是依賴於子類具體的去實現
但是他是對於其子類 協議綱領一般的存在
了解清楚每一個方法含義,對於后續具體的子類將會有非常大的幫助
基本含義
InputStream | 所有字節輸入流的 超類 他是一個抽象類 |
OutputStream | 所有字節輸出流的 超類 他是一個抽象類 |
方法列表
InputStream 包含了讀取方法以及輔助方法
OutputStream包含了寫入方法以及輔助方法
方法對照
read()
read(byte[])
read(byte[], int, int)
|
write(byte[])
write(byte[], int, int)
write(int)
|
close | close |
flush() | |
available()
mark(int)
markSupported()
reset()
skip(long)
|
方法詳解
read
write
read() 與write(int b) 是根本的讀取一個字節或者寫入一個字節的方法 其余形式是針對傳入字節數組作為參數,以及指定字節數組的偏移量時的一些拓展功能 一旦傳遞了字節數組作為參數 read將會讀取數據到字節數組 write將會將字節數組的數據寫入 |
close
都需要關閉流,所以都有close方法 都是關閉流並釋放與此流有關的系統資源 都可能拋出IOException |
在InputStream和OutputStream中,兩個close方法都是空方法 |
flush
flush的含義為刷新,在寫入數據時使用 所以,只有輸出流擁有flush方法 |
之所以需要刷新,是因為有的輸出流的寫方法實現,可能已經緩沖了以前寫入的任何字節 那么,這個方法用於提供能夠立即將數據寫入到磁盤的功能 不過,只是立即請求操作系統進行處理,而不保證這些字節實際已經寫入到物理設備,比如磁盤 |
下面幾個為InputStream獨有
public long skip(long n) throws IOException
|
返回的是實際跳過的字節數 在內部創建一個 byte 數組,然后重復將字節讀入其中,直到讀夠 n 個字節或已到達流末尾為止 |
![]() |