InputStream:輸入流,實現Closeable接口; 數組
publlic abstract class InputStream extends Ojbect implements Closeable 緩存
該抽象類表示字節輸入流的全部類的超類,須要定義InputStream子類的應用程序必須老是提供返回下一個輸入字節的方法。 spa
包括abstract int read()、int read(byte[] b)、int read(byte[] b,int off,int len)等方法 接口
abstract int read():抽象方法,從輸入流中讀取數據的下一個字節。該方法的返回值爲0~255之間的int字節值,若讀到末尾沒有可用的字節,則返回-1.在輸入可用數據、檢測到流末尾或者拋出異常前,此方法一直阻塞。子類應當且必須提供此方法的一個實現。 源碼
int read(byte[] b):從輸入流中讀取必定數量的字節,並將其存儲在緩衝區數組b中。以整數形式返回實際讀取的字節數。在輸入可用數據、檢測到文件末尾或者拋出異常前,此方法一直阻塞。 程序不會向下進行。 io
若是b的長度爲 0,則不讀取任何字節並返回0;不然,嘗試讀取至少一個字節。若是由於流位於文件末尾而沒有可用的字節,則返回值-1;不然,至少讀取一個字節並將其存儲在b中。 class
將讀取的第一個字節存儲在元素b[0]中,下一個存儲在b[1]中,依次類推。讀取的字節數最多等於b的長度。設 k 爲實際讀取的字節數;這些字節將存儲在b[0]到b[k-1]的元素中,不影響b[k]到b[b.length-1]的元素。 程序
類InputStream的read(b)方法的效果等同於: read(b,0,b.length); 方法
返回讀入緩衝區的總字節數;若是由於已經到達流末尾而再也不有數據可用,則返回-1。 im
int read(byte[] b,int off,int len):從輸入流中最多讀取len個數據字節,並將其緩存到b數組中;若len爲0,則不讀取任何字節,並返回0;不然,便將會嘗試讀取至少一個字節,若讀到末尾沒有可用的字節了,則返回-1;不然至少讀取一個字節並將其存儲到b數組中。
參數:
b- 讀入數據的緩衝區。
off- 數組b中將寫入數據的初始偏移量。
len- 要讀取的最大字節數
實現源碼以下:
public int read(byte b[], int off, int len) throws IOException { if (b == null) { throw new NullPointerException(); } else if (off < 0 || len < 0 || len > b.length - off) { throw new IndexOutOfBoundsException(); } else if (len == 0) { return 0; } int c = read(); if (c == -1) { return -1; } b[off] = (byte)c; int i = 1; try { for (; i < len ; i++) { c = read(); if (c == -1) { break; } b[off + i] = (byte)c; } } catch (IOException ee) { } return i; }