|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
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() 测试该输入流是否支持 mark 和 reset 方法以及哪一个方法确实不受支持。 |
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
-
从该输入流读取下一字节数据。返回一个
0
到255
范围内的int
字节值。如果因为到达流末尾而没有可用的字节,则返回值-1
。在输入数据可用、检测到流末尾或抛出异常之前,此方法将一直阻塞。 -
- 覆盖:
-
类
FilterInputStream
中的read
-
- 返回:
-
下一个数据字节;如果已到达流末尾,则返回
-1
。 - 抛出:
-
IOException
- 如果发生 I/O 错误。 - 从以下版本开始:
- JCE1.2
- 另请参见:
-
FilterInputStream.in
read
public int read(byte[] b) throws IOException
-
从该输入流将
b.length
个字节数据读入到字节数组中。InputStream
的read
方法将b
、0
和b.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
- 数据的起始偏移量。 -
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
-
返回不发生阻塞地从此输入流读取的字节数。
InputStream
的markSupported
方法返回false
。此方法应该由子类重写。 -
- 覆盖:
-
类
FilterInputStream
中的available
-
- 返回:
- 不发生阻塞地从此输入流读取的字节数。
- 抛出:
-
IOException
- 如果发生 I/O 错误。 - 从以下版本开始:
- JCE1.2
- 另请参见:
-
FilterInputStream.in
close
public void close() throws IOException
-
关闭该输入流并释放任何与该流关联的系统资源。
CipherInputStream
的close
方法调用基础输入流的close
方法。 -
- 指定者:
-
接口
Closeable
中的close
- 覆盖:
-
类
FilterInputStream
中的close
-
- 抛出:
-
IOException
- 如果发生 I/O 错误。 - 从以下版本开始:
- JCE1.2
- 另请参见:
-
FilterInputStream.in