- java.lang.Object
-
- java.io.OutputStream
-
- java.io.FilterOutputStream
-
- javax.crypto.CipherOutputStream
-
- All Implemented Interfaces:
-
Closeable,Flushable,AutoCloseable
public class CipherOutputStream extends FilterOutputStream
CipherOutputStream由OutputStream和Cipher组成,以便write()方法首先在将数据写入底层OutputStream之前处理数据。 密码必须在被CipherOutputStream使用之前被完全初始化。例如,如果将密码初始化为加密,CipherOutputStream会在写出加密数据之前尝试加密数据。
该类严格遵守其祖先类java.io.OutputStream和java.io.FilterOutputStream的语义,特别是失败语义。 这个类只有在其祖先类中指定的方法,并覆盖它们全部。 此外,此类捕获其祖先类不抛出的所有异常。
对于使用此类的程序员,不要使用在此类中未定义或覆盖的方法(例如后来添加到其中一个超类的新方法或构造函数),因为这些方法的设计和实现不太可能考虑到对CipherOutputStream的安全影响。
- 从以下版本开始:
- 1.4
- 另请参见:
-
OutputStream,FilterOutputStream,Cipher,CipherInputStream
-
-
Field Summary
-
Fields inherited from class java.io.FilterOutputStream
out
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protectedCipherOutputStream(OutputStream os)在不指定密码的情况下,从OutputStream构造CipherOutputStream。CipherOutputStream(OutputStream os, Cipher c)从OutputStream和Cipher构造一个CipherOutputStream。
-
-
-
构造方法详细信息
-
CipherOutputStream
public CipherOutputStream(OutputStream os, Cipher c)
从OutputStream和Cipher构造一个CipherOutputStream。
注意:如果指定的输出流或密码为空,则NullPointerException在使用时可能会被稍后抛出。- 参数
-
os- OutputStream对象 -
c- 一个初始化的Cipher对象
-
CipherOutputStream
protected CipherOutputStream(OutputStream os)
在不指定密码的情况下,从OutputStream构造CipherOutputStream。 这具有使用NullCipher构造CipherOutputStream的效果。
注意:如果指定的输出流为空,则使用NullPointerException可能会稍后抛出。- 参数
-
os- OutputStream对象
-
-
方法详细信息
-
write
public void write(int b) throws IOException将指定的字节写入此输出流。- 重写:
-
write在FilterOutputStream - 参数
-
b-byte。 - 异常
-
IOException- 如果发生I / O错误。
-
write
public void write(byte[] b) throws IOException将b.length字节从指定的字节数组写入此输出流。该
write的方法CipherOutputStream调用write的三个参数与三个参数的方法b,0,并b.length。- 重写:
-
write在FilterOutputStream - 参数
-
b- 数据。 - 异常
-
NullPointerException- 如果b为空。 -
IOException- 如果发生I / O错误。 - 另请参见:
-
write(byte[], int, int)
-
write
public void write(byte[] b, int off, int len) throws IOException从指定的字节数组写入len字节,从偏移量off开始输出到此输出流。- 重写:
-
write在FilterOutputStream - 参数
-
b- 数据。 -
off- 数据中的起始偏移量。 -
len- 要写入的字节数。 - 异常
-
IOException- 如果发生I / O错误。 - 另请参见:
-
FilterOutputStream.write(int)
-
flush
public void flush() throws IOException通过强制已经由封装的密码对象处理的任何缓冲的输出字节被写出来刷新输出流。由封装密码缓冲并等待被其处理的任何字节都不会被写出。 例如,如果封装的密码是块密码,并且使用
write方法之一写入的总字节数小于密码的块大小,则不会写入字节。- Specified by:
-
flush在接口Flushable - 重写:
-
flush在FilterOutputStream - 异常
-
IOException- 如果发生I / O错误。 - 另请参见:
-
FilterOutputStream.out
-
close
public void close() throws IOException关闭此输出流并释放与此流相关联的任何系统资源。此方法调用封装密码对象的
doFinal方法,这将导致处理由封装密码缓冲的任何字节。 通过调用此输出流的flush方法来写出结果。该方法将封装的密码对象重置为初始状态,并调用底层输出流的
close方法。- Specified by:
-
close在接口AutoCloseable - Specified by:
-
close在接口Closeable - 重写:
-
close在FilterOutputStream - 异常
-
IOException- 如果发生I / O错误。 - 另请参见:
-
FilterOutputStream.flush(),FilterOutputStream.out
-
-