java.lang.Object java.io.OutputStream java.io.FilterOutputStream javax.crypto.CipherOutputStream
public class CipherOutputStream
CipherOutputStream 由一个 OutputStream 和一个 Cipher 组成,这样 write() 方法才能在将数据写出到底层 OutputStream 之前先对该数据进行处理。在由 CipherOutputStream 使用之前,密码必须充分初始化。
例如,假设密码初始化为加密,CipherOutputStream 将在写出该加密数据之前,尝试加密数据。
此类严格遵守此语义,尤其是其祖先类 java.io.OutputStream 和 java.io.FilterOutputStream 的失败语义。此类具有在其祖先类中指定的所有方法,并且对所有的这些方法进行了重写。除此之外,此类还对其祖先类未抛出的所有异常进行捕获。
对程序员非常重要的一点是,不要使用未在此类中定义或重写的方法(例如,后来加入到某个超类的新方法或构造方法),因为那些方法的设计和实现有可能未考虑到对 CipherOutputStream 的安全影响。
OutputStream
,
FilterOutputStream
,
Cipher
,
CipherInputStream
字段摘要 |
---|
从类 java.io.FilterOutputStream 继承的字段 |
---|
out |
构造方法摘要 | |
---|---|
protected |
CipherOutputStream(OutputStream os) 从 OutputStream 构造 CipherOutputStream,不指定 Cipher。 |
|
CipherOutputStream(OutputStream os, Cipher c) 从 OutputStream 和 Cipher 构造 CipherOutputStream。 |
方法摘要 | |
---|---|
void |
close() 关闭此输出流并释放任何与此流关联的系统资源。 |
void |
flush() 强制写出已由封装的密码对象处理的任何缓存输出字节来刷新此输出流。 |
void |
write(byte[] b) 从指定的字节数组中将 b.length 个字节写入此输出流。 |
void |
write(byte[] b, int off, int len) 将指定的字节数组中从 off 偏移量开始的 len 个字节写入此输出流。 |
void |
write(int b) 将指定的字节写入此输出流。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public CipherOutputStream(OutputStream os, Cipher c)
os
- OutputStream 对象
c
- 已初始化的 Cipher 对象
protected CipherOutputStream(OutputStream os)
os
- OutputStream 对象
方法详细信息 |
---|
public void write(int b) throws IOException
FilterOutputStream
中的
write
b
-
byte
。
IOException
- 如果发生 I/O 错误。
public void write(byte[] b) throws IOException
b.length
个字节写入此输出流。
CipherOutputStream
的 write
方法调用带三个参数的 write
方法,三个参数为 b
、0
和 b.length
。
FilterOutputStream
中的
write
b
- 数据。
NullPointerException
- 如果
b
为 null。
IOException
- 如果发生 I/O 错误。
write(byte[], int, int)
public void write(byte[] b, int off, int len) throws IOException
off
偏移量开始的
len
个字节写入此输出流。
FilterOutputStream
中的
write
b
- 数据。
off
- 数据中的初始偏移量。
len
- 要写入的字节数。
IOException
- 如果发生 I/O 错误。
FilterOutputStream.write(int)
public void flush() throws IOException
由封装的密码缓存并等待由其处理的任何字节将不被写出。例如,假设封装的密码为块密码,并且使用某个 write
方法写入的总字节数小于密码的块大小,将不写出任何字节。
Flushable
中的
flush
FilterOutputStream
中的
flush
IOException
- 如果发生 I/O 错误。
FilterOutputStream.out
public void close() throws IOException
此方法调用封装密码对象的 doFinal
方法,它使得由该封装密码缓存的任何字节都被处理。通过调用此输出流的 flush
方法写出结果。
此方法将封装密码对象重置为其初始状态并调用底层输出流的 close
方法。
Closeable
中的
close
FilterOutputStream
中的
close
IOException
- 如果发生 I/O 错误。
FilterOutputStream.flush()
,
FilterOutputStream.out