IO _ InputStream

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;     }

相關文章
相關標籤/搜索