public class CipherInputStream extends FilterInputStream
例如,如果将密码初始化为解密,则CipherInputStream将在返回解密的数据之前尝试读取数据并将其解密。
该类严格遵守其祖先类java.io.FilterInputStream和java.io.InputStream的语义,特别是失败语义。 这个类只有在其祖先类中指定的方法,并覆盖它们全部。 此外,此类捕获其祖先类不抛出的所有异常。 特别地, skip
方法跳过,并且available
方法仅计数已由封装的密码处理的数据。
对于使用此类的程序员,不要使用在此类中未定义或覆盖的方法(例如后来添加到其中一个超类的新方法或构造函数),因为这些方法的设计和实现不太可能考虑到对CipherInputStream的安全性影响。
InputStream
, FilterInputStream
, Cipher
, CipherOutputStream
in
Modifier | Constructor and Description |
---|---|
protected |
CipherInputStream(InputStream is)
从InputStream构造CipherInputStream,而不指定密码。
|
|
CipherInputStream(InputStream is, Cipher c)
从InputStream和Cipher构造一个CipherInputStream。
|
Modifier and Type | Method and Description |
---|---|
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 字节的字节,可从该输入流中读取而不阻塞。
|
mark, reset
public CipherInputStream(InputStream is, Cipher c)
is
- 要处理的输入流
c
- 一个初始化的Cipher对象
protected CipherInputStream(InputStream is)
is
- 待处理的输入流
public int read() throws IOException
int
返回,范围为0
至255
。
如果没有字节可用,因为流已经到达,则返回值-1
。
该方法阻塞直到输入数据可用,检测到流的结尾,或抛出异常。
read
在
FilterInputStream
-1
。
IOException
- 如果发生I / O错误。
FilterInputStream.in
public int read(byte[] b) throws IOException
b.length
字节的数据到字节数组。
该read
的方法InputStream
调用read
的三个参数与参数方法b
, 0
和b.length
。
read
在
FilterInputStream
b
- 读取数据的缓冲区。
-1
是没有更多的数据,因为已经到达流的结尾。
IOException
- 如果发生I / O错误。
InputStream.read(byte[], int, int)
public int read(byte[] b, int off, int len) throws IOException
len
字节的数据到字节数组。
此方法将阻塞,直到某些输入可用。
如果第一个参数是null,
最多可以读取并丢弃len
个字节。
read
在
FilterInputStream
b
- 读取数据的缓冲区。
off
- 目标数组
buf
的起始偏移量
len
- 读取的最大字节数。
-1
。
IOException
- 如果发生I / O错误。
InputStream.read()
public long skip(long n) throws IOException
n
字节的字节,可从该输入流中读取而不阻塞。
可能会跳过比请求的字节少的字节。 跳过的实际字节数等于n
或调用available
的结果,以较小者为准。 如果n
小于0,则不跳过任何字节。
返回实际跳过的字节数。
skip
在
FilterInputStream
n
- 要跳过的字节数。
IOException
- 如果发生I / O错误。
public int available() throws IOException
available
方法InputStream
返回0
。
这个方法应该被子类覆盖。
available
在
FilterInputStream
IOException
- 如果发生I / O错误。
public void close() throws IOException
该close
的方法CipherInputStream
调用close
其底层输入流的方法。
close
在界面
Closeable
close
在界面
AutoCloseable
close
在类别
FilterInputStream
IOException
- 如果发生I / O错误。
FilterInputStream.in
public boolean markSupported()
mark
和
reset
方法,而不是。
markSupported
在类别
FilterInputStream
false
,因为这个类不支持
mark
和
reset
方法。
InputStream.mark(int)
,
InputStream.reset()