JavaTM 2 Platform
Standard Ed. 6

javax.crypto
類別 CipherInputStream

java.lang.Object
  繼承者 java.io.InputStream
      繼承者 java.io.FilterInputStream
          繼承者 javax.crypto.CipherInputStream
所有已實作的介面:
Closeable

public class CipherInputStream
extends FilterInputStream

CipherInputStream 由一個 InputStream 和一個 Cipher 組成,這樣 read() 方法才能返回從底層 InputStream 讀入但已經由該 Cipher 另外處理過的資料。在由 CipherInputStream 使用之前,該 Cipher 必須充分初始化。

例如,假設 Cipher 初始化為解密,在返回解密的資料之前,CipherInputStream 將嘗試讀入資料並將其解密。

此類別嚴格遵守此語義,尤其是其祖先類別 java.io.FilterInputStream 和 java.io.InputStream 的失敗語義。此類別具有在其祖先類別中指定的所有方法,並且對所有的這些方法進行了覆寫。除此之外,此類別還對其祖先類別未拋出的所有異常進行捕獲。特別地,skip 方法跳過,available 方法只計算已由封裝的 Cipher 處理過的資料。

對開發人員非常重要的一點是,請不要使用未在此類別中定義或覆寫的方法(例如,後來加入到其父級類別之一中的新方法或建構子),因為那些方法的設計和實作可能未考慮到對 CipherInputStream 的安全影響。

從以下版本開始:
1.4
另請參見:
InputStream, FilterInputStream, Cipher, CipherOutputStream

欄位摘要
 
從類別 java.io.FilterInputStream 繼承的欄位
in
 
建構子摘要
protected CipherInputStream(InputStream is)
          根據 InputStream 建構 CipherInputStream,不指定 Cipher。
  CipherInputStream(InputStream is, Cipher c)
          根據 InputStream 和 Cipher 建構 CipherInputStream。
 
方法摘要
 int available()
          返回不發生阻塞地從此輸入串流讀取的位元組數。
 void close()
          關閉該輸入串流並釋放任何與該串流關聯的系統資源。
 boolean markSupported()
          測試該輸入串流是否支持 markreset 方法以及哪一個方法確實不受支持。
 int read()
          從該輸入串流讀取下一資料位元組。
 int read(byte[] b)
          從該輸入串流將 b.length 個資料位元組讀入到位元組陣列中。
 int read(byte[] b, int off, int len)
          從該輸入串流將 len 個位元組資料讀入到位元組陣列中。
 long skip(long n)
          跳過不發生阻塞地從該輸入串流讀取的位元組中的 n 個位元組的輸入。
 
從類別 java.io.FilterInputStream 繼承的方法
mark, reset
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

CipherInputStream

public CipherInputStream(InputStream is,
                         Cipher c)
根據 InputStream 和 Cipher 建構 CipherInputStream。
註:如果指定的輸入串流或密碼為 null,則在後續使用輸出串流或密碼時可能拋出 NullPointerException 異常。

參數:
is - 將被處理的輸入串流
c - 已初始化的 Cipher 物件

CipherInputStream

protected CipherInputStream(InputStream is)
根據 InputStream 建構 CipherInputStream,不指定 Cipher。它與使用 NullCipher 建構 CipherInputStream 具有相同的效果。
註:如果指定的輸入串流為 null,則在後續使用輸出串流時可能拋出 NullPointerException 異常。

參數:
is - 將被處理的輸入串流
方法詳細資訊

read

public int read()
         throws IOException
從該輸入串流讀取下一資料位元組。返回一個 0255 範圍內的 int 位元組值。如果因為到達串流末尾而沒有可用的位元組,則返回值 -1。在輸入資料可用、檢測到串流末尾或拋出異常之前,此方法將一直阻塞。

覆寫:
類別 FilterInputStream 中的 read
返回:
下一個資料位元組;如果已到達串流末尾,則返回 -1
拋出:
IOException - 如果發生 I/O 錯誤。
從以下版本開始:
JCE1.2
另請參見:
FilterInputStream.in

read

public int read(byte[] b)
         throws IOException
從該輸入串流將 b.length 個資料位元組讀入到位元組陣列中。

InputStreamread 方法將 b0b.length 作為三個參數來調用 read 方法。

覆寫:
類別 FilterInputStream 中的 read
參數:
b - 存儲讀入資料的緩衝區。
返回:
讀入緩衝區的總位元組數,如果由於串流末尾已到達而不再有資料,則返回 -1
拋出:
IOException - 如果發生 I/O 錯誤。
從以下版本開始:
JCE1.2
另請參見:
InputStream.read(byte[], int, int)

read

public int read(byte[] b,
                int off,
                int len)
         throws IOException
從該輸入串流將 len 個位元組資料讀入到位元組陣列中。在某些輸入可用之前,此方法將阻塞。如果第一個參數為 null,則讀取和丟棄的位元組數最多為 len 個。

覆寫:
類別 FilterInputStream 中的 read
參數:
b - 存儲讀入資料的緩衝區。
off - 目標陣列 buf 中的起始偏移量
len - 讀取的最大位元組數。
返回:
讀入緩衝區的總位元組數,如果由於已到達串流末尾而不再有資料,則返回 -1
拋出:
IOException - 如果發生 I/O 錯誤。
從以下版本開始:
JCE1.2
另請參見:
InputStream.read()

skip

public long skip(long n)
          throws IOException
跳過不發生阻塞地從該輸入串流讀取的位元組中的 n 個位元組的輸入。

可能跳過比請求更少的位元組數。實際跳過的位元組數等於 n 或等於調用 available 的結果,總之都較小。如果 n 為小於零,則不跳過任何位元組。

返回實際跳過的位元組數。

覆寫:
類別 FilterInputStream 中的 skip
參數:
n - 要跳過的位元組數。
返回:
實際跳過的位元組數。
拋出:
IOException - 如果發生 I/O 錯誤。
從以下版本開始:
JCE1.2

available

public int available()
              throws IOException
返回不發生阻塞地從此輸入串流讀取的位元組數。InputStreammarkSupported 方法返回 false。此方法應該由子類別覆寫。

覆寫:
類別 FilterInputStream 中的 available
返回:
不發生阻塞地從此輸入串流讀取的位元組數。
拋出:
IOException - 如果發生 I/O 錯誤。
從以下版本開始:
JCE1.2

close

public void close()
           throws IOException
關閉該輸入串流並釋放任何與該串流關聯的系統資源。

CipherInputStreamclose 方法調用底層輸入串流的 close 方法。

指定者:
介面 Closeable 中的 close
覆寫:
類別 FilterInputStream 中的 close
拋出:
IOException - 如果發生 I/O 錯誤。
從以下版本開始:
JCE1.2
另請參見:
FilterInputStream.in

markSupported

public boolean markSupported()
測試該輸入串流是否支持 markreset 方法以及哪一個方法確實不受支持。

覆寫:
類別 FilterInputStream 中的 markSupported
返回:
因為此類別不支持 markreset 方法,所以返回 false
從以下版本開始:
JCE1.2
另請參見:
InputStream.mark(int), InputStream.reset()

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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