JavaTM 2 Platform
Standard Ed. 6

java.io
類別 ByteArrayInputStream

java.lang.Object
  繼承者 java.io.InputStream
      繼承者 java.io.ByteArrayInputStream
所有已實作的介面:
Closeable

public class ByteArrayInputStream
extends InputStream

ByteArrayInputStream 套件含一個內部緩衝區,該緩衝區包含從串流中讀取的位元組。內部計數器追蹤 read 方法要提供的下一個位元組。

關閉 ByteArrayInputStream 無效。此類別中的方法在關閉此串流後仍可被調用,而不會產生任何 IOException

從以下版本開始:
JDK1.0
另請參見:
StringBufferInputStream

欄位摘要
protected  byte[] buf
          由該串流的創建者提供的 byte 陣列。
protected  int count
          比輸入串流緩衝區中最後一個有效字元的索引大一的索引。
protected  int mark
          串流中當前的標記位置。
protected  int pos
          要從輸入串流緩衝區中讀取的下一個字元的索引。
 
建構子摘要
ByteArrayInputStream(byte[] buf)
          創建一個 ByteArrayInputStream,使用 buf 作為其緩衝區陣列。
ByteArrayInputStream(byte[] buf, int offset, int length)
          創建 ByteArrayInputStream,使用 buf 作為其緩衝區陣列。
 
方法摘要
 int available()
          返回可從此輸入串流讀取(或跳過)的剩餘位元組數。
 void close()
          關閉 ByteArrayInputStream 無效。
 void mark(int readAheadLimit)
          設置串流中的當前標記位置。
 boolean markSupported()
          測試此 InputStream 是否支持 mark/reset。
 int read()
          從此輸入串流中讀取下一個資料位元組。
 int read(byte[] b, int off, int len)
          將最多 len 個資料位元組從此輸入串流讀入 byte 陣列。
 void reset()
          將緩衝區的位置重置為標記位置。
 long skip(long n)
          從此輸入串流中跳過 n 個輸入位元組。
 
從類別 java.io.InputStream 繼承的方法
read
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

buf

protected byte[] buf
由該串流的創建者提供的 byte 陣列。元素 buf[0]buf[count-1] 是只能從串流中讀取的位元組;元素 buf[pos] 是要讀取的下一個位元組。


pos

protected int pos
要從輸入串流緩衝區中讀取的下一個字元的索引。此值應該始終是非負數,並且不應大於 count 值。從輸入串流緩衝區中讀取的下一個位元組是 buf[pos]


mark

protected int mark
串流中當前的標記位置。建構時預設將 ByteArrayInputStream 物件標記在位置零處。通過 mark() 方法可將其標記在緩衝區內的另一個位置處。通過 reset() 方法將當前緩衝區位置設置為此點。

如果尚未設置標記,則標記值是傳遞給建構子的偏移量(如果未提供偏移量,則標記值為 0)。

從以下版本開始:
JDK1.1

count

protected int count
比輸入串流緩衝區中最後一個有效字元的索引大一的索引。此值應該始終是非負數,並且不應大於 buf 的長度。它比 buf 中最後一個可從輸入串流緩衝區中讀取的位元組位置大一。

建構子詳細資訊

ByteArrayInputStream

public ByteArrayInputStream(byte[] buf)
創建一個 ByteArrayInputStream,使用 buf 作為其緩衝區陣列。該緩衝區陣列不是複製得到的。pos 的初始值是 0count 的初始值是 buf 的長度。

參數:
buf - 輸入緩衝區。

ByteArrayInputStream

public ByteArrayInputStream(byte[] buf,
                            int offset,
                            int length)
創建 ByteArrayInputStream,使用 buf 作為其緩衝區陣列。pos 的初始值是 offsetcount 的初始值是 offset+lengthbuf.length 中的最小值。該緩衝區陣列不是複製得到的。將該緩衝區的標記設置為指定的偏移量。

參數:
buf - 輸入緩衝區。
offset - 緩衝區中要讀取的第一個位元組的偏移量。
length - 從緩衝區中讀取的最大位元組數。
方法詳細資訊

read

public int read()
從此輸入串流中讀取下一個資料位元組。返回一個 0255 範圍內的 int 位元組值。如果因為到達串流末尾而沒有可用的位元組,則返回值 -1

read 方法不會阻塞。

指定者:
類別 InputStream 中的 read
返回:
下一個資料位元組,如果到達串流末尾,則返回 -1

read

public int read(byte[] b,
                int off,
                int len)
將最多 len 個資料位元組從此輸入串流讀入 byte 陣列。如果 pos 等於 count,則返回 -1 指示檔案結束。否則,讀取的位元組數 k 等於 lencount-pos 中的較小者。如果 k 是正數,則以 System.arraycopy 執行的方式將 buf[pos]buf[pos+k-1] 的位元組複製到 b[off]b[off+k-1] 中。將值 kpos 相加並返回 k

read 方法不會阻塞。

覆寫:
類別 InputStream 中的 read
參數:
b - 存儲讀入資料的緩衝區。
off - 目標陣列 b 的起始偏移量。
len - 讀取的最大位元組數。
返回:
讀入緩衝區的總位元組數,如果由於已到達串流末尾而不再有資料,則返回 -1
拋出:
NullPointerException - 如果 bnull
IndexOutOfBoundsException - 如果 off 為負,len 為負,或者 len 大於 b.length - off
另請參見:
InputStream.read()

skip

public long skip(long n)
從此輸入串流中跳過 n 個輸入位元組。如果已到達輸入串流末尾,則可能會跳過較少的位元組。實際跳過的位元組數 k 等於 ncount-pos 中的較小者。將值 kpos 相加並返回 k

覆寫:
類別 InputStream 中的 skip
參數:
n - 要跳過的位元組數。
返回:
跳過的實際位元組數。

available

public int available()
返回可從此輸入串流讀取(或跳過)的剩餘位元組數。

返回值是 count - pos,它是要從輸入緩衝區中讀取的剩餘位元組數。

覆寫:
類別 InputStream 中的 available
返回:
不受阻塞地從此輸入串流讀取(或跳過)的剩餘位元組數。

markSupported

public boolean markSupported()
測試此 InputStream 是否支持 mark/reset。ByteArrayInputStreammarkSupported 方法始終返回 true

覆寫:
類別 InputStream 中的 markSupported
返回:
如果此輸入串流實例支持 mark 和 reset 方法,則返回 true;否則返回 false
從以下版本開始:
JDK1.1
另請參見:
InputStream.mark(int), InputStream.reset()

mark

public void mark(int readAheadLimit)
設置串流中的當前標記位置。建構時預設將 ByteArrayInputStream 物件標記在位置零處。通過此方法可將其標記在緩衝區內的另一個位置處。

如果尚未設置標記,則標記值是傳遞給建構子的偏移量(如果未提供偏移量,則標記值為 0)。

註:readAheadLimit 對於此類別沒有意義。

覆寫:
類別 InputStream 中的 mark
參數:
readAheadLimit - 在標記位置失效前可以讀取位元組的最大限制。
從以下版本開始:
JDK1.1
另請參見:
InputStream.reset()

reset

public void reset()
將緩衝區的位置重置為標記位置。除非已標記了另一個位置,或者在建構子中指定了一個偏移量,否則該標記位置是 0。

覆寫:
類別 InputStream 中的 reset
另請參見:
InputStream.mark(int), IOException

close

public void close()
           throws IOException
關閉 ByteArrayInputStream 無效。此類別中的方法在關閉此串流後仍可被調用,而不會產生任何 IOException

指定者:
介面 Closeable 中的 close
覆寫:
類別 InputStream 中的 close
拋出:
IOException - 如果發生 I/O 錯誤。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only