Module  java.base
软件包  javax.crypto

Class CipherOutputStream

  • All Implemented Interfaces:
    CloseableFlushableAutoCloseable


    public class CipherOutputStream
    extends FilterOutputStream
    CipherOutputStream由OutputStream和Cipher组成,以便write()方法首先在将数据写入底层OutputStream之前处理数据。 密码必须在被CipherOutputStream使用之前被完全初始化。

    例如,如果将密码初始化为加密,CipherOutputStream会在写出加密数据之前尝试加密数据。

    该类严格遵守其祖先类java.io.OutputStream和java.io.FilterOutputStream的语义,特别是失败语义。 这个类只有在其祖先类中指定的方法,并覆盖它们全部。 此外,此类捕获其祖先类不抛出的所有异常。

    对于使用此类的程序员,不要使用在此类中未定义或覆盖的方法(例如后来添加到其中一个超类的新方法或构造函数),因为这些方法的设计和实现不太可能考虑到对CipherOutputStream的安全影响。

    从以下版本开始:
    1.4
    另请参见:
    OutputStreamFilterOutputStreamCipherCipherInputStream
    • 方法摘要

      所有方法  接口方法  具体的方法 
      Modifier and Type 方法 描述
      void close​()
      关闭此输出流并释放与此流相关联的任何系统资源。
      void flush​()
      通过强制已经由封装的密码对象处理的任何缓冲的输出字节被写出来刷新输出流。
      void write​(byte[] b)
      b.length字节从指定的字节数组写入此输出流。
      void write​(byte[] b, int off, int len)
      从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。
      void write​(int b)
      将指定的字节写入此输出流。
    • 构造方法详细信息

      • 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​(byte[] b,
                          int off,
                          int len)
                   throws IOException
        从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。
        重写:
        writeFilterOutputStream
        参数
        b - 数据。
        off - 数据中的起始偏移量。
        len - 要写入的字节数。
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        FilterOutputStream.write(int)
      • flush

        public void flush​()
                   throws IOException
        通过强制已经由封装的密码对象处理的任何缓冲的输出字节被写出来刷新输出流。

        由封装密码缓冲并等待被其处理的任何字节都不会被写出。 例如,如果封装的密码是块密码,并且使用write方法之一写入的总字节数小于密码的块大小,则不会写入字节。

        Specified by:
        flush在接口 Flushable
        重写:
        flushFilterOutputStream
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        FilterOutputStream.out
      • close

        public void close​()
                   throws IOException
        关闭此输出流并释放与此流相关联的任何系统资源。

        此方法调用封装密码对象的doFinal方法,这将导致处理由封装密码缓冲的任何字节。 通过调用此输出流的flush方法来写出结果。

        该方法将封装的密码对象重置为初始状态,并调用底层输出流的close方法。

        Specified by:
        close在接口 AutoCloseable
        Specified by:
        close在接口 Closeable
        重写:
        closeFilterOutputStream
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        FilterOutputStream.flush()FilterOutputStream.out