模块  java.desktop
软件包  javax.imageio.stream

Interface ImageOutputStream

  • All Superinterfaces:
    AutoCloseable , Closeable , DataInput , DataOutput , ImageInputStream
    所有已知实现类:
    FileCacheImageOutputStream , FileImageOutputStream , ImageOutputStreamImpl , MemoryCacheImageOutputStream

    public interface ImageOutputStream
    extends ImageInputStream, DataOutput
    可ImageWriter的输出流接口,供ImageWriter使用。 各种输出目的地,例如OutputStream和File ,以及未来的快速I / O目的地可以由该接口的合适实现“包装”以供Image I / O API使用。

    与标准OutputStream不同,ImageOutputStream扩展了其对应物ImageInputStream 。 因此,可以在写入时从流中读取。 尽管在字节对齐写入之前处理非零位偏移的语义必然不同于在字节之前处理非零位偏移的语义,但相同的搜索和刷新位置同样适用于读取和写入。对齐阅读。 读取字节时,在读取之前将任何位偏移设置为0; 写入字节时,非零位偏移会导致字节中的其余位写为0。 然后,字节对齐的写入从下一个字节位置开始。

    另请参见:
    ImageInputStream
    • 方法详细信息

      • write

        void write​(int b)
            throws IOException
        将单个字节写入当前位置的流。 b的24个高位被忽略。

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。 实施者可以使用flushBits的方法ImageOutputStreamImpl保证这一点。

        Specified by:
        write接口 DataOutput
        参数
        b - 一个 int其低8位将被写入。
        异常
        IOException - 如果发生I / O错误。
      • write

        void write​(byte[] b)
            throws IOException
        将一个字节序列写入当前位置的流。 如果b.length为0, b.length写入任何内容。 首先写入字节b[0] ,然后写入字节b[1] ,依此类推。

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        Specified by:
        write在接口 DataOutput
        参数
        b - 要写入的数组 byte 。
        异常
        NullPointerException - 如果 b是 null 。
        IOException - 如果发生I / O错误。
      • write

        void write​(byte[] b,
                   int off,
                   int len)
            throws IOException
        将一个字节序列写入当前位置的流。 如果len为0, len写入任何内容。 首先写入字节b[off] ,然后写入字节b[off + 1] ,依此类推。

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。 实施者可以使用flushBits的方法ImageOutputStreamImpl保证这一点。

        Specified by:
        write在接口 DataOutput
        参数
        b - 要写入的数组 byte 。
        off - 数据中的起始偏移量。
        len - 要写入的数量为 byte s。
        异常
        IndexOutOfBoundsException - 如果 off为负数, len为负数,或者 off + len为大于 b.length 。
        NullPointerException - 如果 b是 null 。
        IOException - 如果发生I / O错误。
      • writeBoolean

        void writeBoolean​(boolean v)
                   throws IOException
        将boolean值写入流。 如果v为true,则写入值(byte)1 ; 如果v为false,则写入值(byte)0 。

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        Specified by:
        writeBoolean在接口 DataOutput
        参数
        v - 要编写的 boolean 。
        异常
        IOException - 如果发生I / O错误。
      • writeByte

        void writeByte​(int v)
                throws IOException
        将v的8个低位写入流。 v的24个高位被忽略。 (这意味着writeByte不完全一样的东西作为write为整数参数。)

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        Specified by:
        writeByte在接口 DataOutput
        参数
        v - 包含要写入的字节值的 int 。
        异常
        IOException - 如果发生I / O错误。
      • writeShort

        void writeShort​(int v)
                 throws IOException
        将16个低位v写入流。 v的16个高位被忽略。 如果流使用网络字节顺序,则按顺序写入的字节将为:
          (byte)((v >> 8) & 0xff)
         (byte)(v & 0xff) 
        否则,写入的字节将是:
          (byte)(v & 0xff)
         (byte)((v >> 8) & 0xff) 

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        Specified by:
        writeShort接口 DataOutput
        参数
        v - 包含要写入的短值的 int 。
        异常
        IOException - 如果发生I / O错误。
      • writeInt

        void writeInt​(int v)
               throws IOException
        将32位的v写入流。 如果流使用网络字节顺序,则按顺序写入的字节将为:
          (byte)((v >> 24) & 0xff)
         (byte)((v >> 16) & 0xff)
         (byte)((v >> 8) & 0xff)
         (byte)(v & 0xff) 
        其他,写的字节将是:
          (byte)(v & 0xff)
         (byte)((v >> 8) & 0xff)
         (byte)((v >> 16) & 0xff)
         (byte)((v >> 24) & 0xff) 

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        Specified by:
        writeInt接口 DataOutput
        参数
        v - 包含要写入的值的 int 。
        异常
        IOException - 如果发生I / O错误。
      • writeLong

        void writeLong​(long v)
                throws IOException
        将64位的v写入流中。 如果流使用网络字节顺序,则按顺序写入的字节将为:
          (byte)((v >> 56) & 0xff)
         (byte)((v >> 48) & 0xff)
         (byte)((v >> 40) & 0xff)
         (byte)((v >> 32) & 0xff)
         (byte)((v >> 24) & 0xff)
         (byte)((v >> 16) & 0xff)
         (byte)((v >> 8) & 0xff)
         (byte)(v & 0xff) 
        否则,写入的字节将是:
          (byte)(v & 0xff)
         (byte)((v >> 8) & 0xff)
         (byte)((v >> 16) & 0xff)
         (byte)((v >> 24) & 0xff)
         (byte)((v >> 32) & 0xff)
         (byte)((v >> 40) & 0xff)
         (byte)((v >> 48) & 0xff)
         (byte)((v >> 56) & 0xff) 

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        Specified by:
        writeLong在界面 DataOutput
        参数
        v - 包含要写入的值的 long 。
        异常
        IOException - 如果发生I / O错误。
      • writeFloat

        void writeFloat​(float v)
                 throws IOException
        将float值(由4个字节组成)写入输出流。 它这样做是因为,如果它首先将这个float值到int在完全相同的方式Float.floatToIntBits方法,然后在的完全相同的方式写入的int值writeInt方法。

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        Specified by:
        writeFloat接口 DataOutput
        参数
        v - 包含要写入的值的 float 。
        异常
        IOException - 如果发生I / O错误。
      • writeDouble

        void writeDouble​(double v)
                  throws IOException
        将double值(由4个字节组成)写入输出流。 它这样做是因为,如果它首先将这个double值到long在完全相同的方式Double.doubleToLongBits方法,然后在完全相同的方式写入长值writeLong方法。

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        Specified by:
        writeDouble在接口 DataOutput
        参数
        v - 包含要写入的值的 double 。
        异常
        IOException - 如果发生I / O错误。
      • writeBytes

        void writeBytes​(String s)
                 throws IOException
        将字符串写入输出流。 对于字符串s中的每个字符(按顺序),将一个字节写入输出流。 如果s是null ,则抛出NullPointerException 。

        如果s.length为零,则不写入任何字节。 否则,首先写入字符s[0] ,然后写入s[1] ,依此类推; 最后写的字符是s[s.length-1] 。 对于每个字符,写入一个字节,即低位字节,与writeByte方法完全相同。 字符串中每个字符的高位8位被忽略。

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        Specified by:
        writeBytes在接口 DataOutput
        参数
        s - 包含要写入的值的 String 。
        异常
        NullPointerException - 如果 s是 null 。
        IOException - 如果发生I / O错误。
      • writeChars

        void writeChars​(String s)
                 throws IOException
        将字符串写入输出流。 对于字符串s中的每个字符,按顺序,将两个字节写入输出流,根据当前字节顺序设置进行排序。 如果使用网络字节顺序,则首先写入高位字节; 否则,订单会被撤销。 如果s是null ,则抛出NullPointerException 。

        如果s.length为零,则不写入任何字节。 否则,首先写入字符s[0] ,然后写入s[1] ,依此类推; 最后写的字符是s[s.length-1] 。

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        Specified by:
        writeChars接口 DataOutput
        参数
        s - 包含要写入的值的 String 。
        异常
        NullPointerException - 如果 s是 null 。
        IOException - 如果发生I / O错误。
      • writeUTF

        void writeUTF​(String s)
               throws IOException
        以网络字节顺序将两个字节的长度信息写入输出流,然后是字符串s中每个字符的modified UTF-8表示。 如果s是null ,则抛出NullPointerException 。 字符串s中的每个字符都将转换为一个,两个或三个字节的组,具体取决于字符的值。

        如果字符c在\u0001到\u007f范围内,则由一个字节表示:

          (byte)c 

        如果字符c是\u0000或者在\u0080到\u07ff范围内,那么它由两个字节表示,按所示顺序写入:

           (byte)(0xc0 | (0x1f & (c >> 6))) (byte)(0x80 | (0x3f & c))  

        如果字符c在\u0800到uffff范围内,那么它由三个字节表示,按所示顺序写入:

           (byte)(0xe0 | (0x0f & (c >> 12))) (byte)(0x80 | (0x3f & (c >> 6))) (byte)(0x80 | (0x3f & c))  

        首先,计算表示s所有字符所需的总字节数。 如果此数字大于65535 ,则抛出UTFDataFormatException 。 否则, writeShort与writeShort方法完全相同的方式将此长度写入输出流; 在此之后,写入字符串s中每个字符的一个,两个或三个字节的表示。

        忽略当前字节顺序设置。

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        注意:此方法不应用于使用标准UTF-8的图像格式的实现,因为此处使用的修改后的UTF-8与标准UTF-8不兼容。

        Specified by:
        writeUTF在接口 DataOutput
        参数
        s - 包含要写入的值的 String 。
        异常
        NullPointerException - 如果 s是 null 。
        UTFDataFormatException - 如果修改后的UTF-8表示形式 s需要超过65536个字节。
        IOException - 如果发生I / O错误。
      • writeShorts

        void writeShorts​(short[] s,
                         int off,
                         int len)
                  throws IOException
        将一系列短路写入当前位置的流。 如果len为0, len写入任何内容。 首先写短s[off] ,然后写短s[off + 1] ,依此类推。 流的字节顺序用于确定写入各个字节的顺序。

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        参数
        s - 要写入的数组 short 。
        off - 数据中的起始偏移量。
        len - 要写入的数量为 short s。
        异常
        IndexOutOfBoundsException - 如果 off为负数, len为负数,或者 off + len为大于 s.length 。
        NullPointerException - 如果 s是 null 。
        IOException - 如果发生I / O错误。
      • writeChars

        void writeChars​(char[] c,
                        int off,
                        int len)
                 throws IOException
        将一系列字符写入当前位置的流。 如果len为0, len写入任何内容。 首先写入char c[off] ,然后写入char c[off + 1] ,依此类推。 流的字节顺序用于确定写入各个字节的顺序。

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        参数
        c - 要写入的数组 char 。
        off - 数据中的起始偏移量。
        len - 要写入的数量为 char 。
        异常
        IndexOutOfBoundsException - 如果 off为负数, len为负数,或者 off + len为大于 c.length 。
        NullPointerException - 如果 c是 null 。
        IOException - 如果发生I / O错误。
      • writeInts

        void writeInts​(int[] i,
                       int off,
                       int len)
                throws IOException
        将一系列整数写入当前位置的流。 如果len为0, len写入任何内容。 首先写入int i[off] ,然后写入int i[off + 1] ,依此类推。 流的字节顺序用于确定写入各个字节的顺序。

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        参数
        i - 要写入的数组 int 。
        off - 数据中的起始偏移量。
        len - 要写入的数量为 int 。
        异常
        IndexOutOfBoundsException - 如果 off为负数, len为负数,或者 off + len为大于 i.length 。
        NullPointerException - 如果 i是 null 。
        IOException - 如果发生I / O错误。
      • writeLongs

        void writeLongs​(long[] l,
                        int off,
                        int len)
                 throws IOException
        将一系列longs写入当前位置的流。 如果len为0, len写入任何内容。 l[off]是长l[off] ,然后是长l[off + 1] ,依此类推。 流的字节顺序用于确定写入各个字节的顺序。

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        参数
        l - 要写入的数组 long 。
        off - 数据中的起始偏移量。
        len - 要写入的数量为 long s。
        异常
        IndexOutOfBoundsException - 如果 off为负数, len为负数,或者 off + len为大于 l.length 。
        NullPointerException - 如果 l是 null 。
        IOException - 如果发生I / O错误。
      • writeFloats

        void writeFloats​(float[] f,
                         int off,
                         int len)
                  throws IOException
        将一系列浮点数写入当前位置的流。 如果len为0, len写入任何内容。 浮动f[off]首先写入,然后浮动f[off + 1] ,依此类推。 流的字节顺序用于确定写入各个字节的顺序。

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        参数
        f - 要写入的数组 float 。
        off - 数据中的起始偏移量。
        len - 要写入的数量为 float 。
        异常
        IndexOutOfBoundsException - 如果 off为负数, len为负数,或者 off + len为大于 f.length 。
        NullPointerException - 如果 f是 null 。
        IOException - 如果发生I / O错误。
      • writeDoubles

        void writeDoubles​(double[] d,
                          int off,
                          int len)
                   throws IOException
        将一系列双精度写入当前位置的流。 如果len为0, len写入任何内容。 首先写入双d[off] ,然后是双d[off + 1] ,依此类推。 流的字节顺序用于确定写入各个字节的顺序。

        如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。

        参数
        d - 要写入的数组 doubles 。
        off - 数据中的起始偏移量。
        len - 要写入的数量为 double 。
        异常
        IndexOutOfBoundsException - 如果 off为负数, len为负数,或者 off + len为大于 d.length 。
        NullPointerException - 如果 d是 null 。
        IOException - 如果发生I / O错误。
      • writeBit

        void writeBit​(int bit)
               throws IOException
        将由参数的最低有效位给出的单个位写入当前字节位置内当前位偏移的流。 参数的高31位被忽略。 给定位替换该位置的前一位。 位偏移增加1并减少模8。

        如果在将字节刷新到目标时从未设置过特定字节的任何位,则这些位将自动设置为0。

        参数
        bit - 一个 int其最低有效位将写入流。
        异常
        IOException - 如果发生I / O错误。
      • writeBits

        void writeBits​(long bits,
                       int numBits)
                throws IOException
        将由bits参数的numBits最低有效位以从左到右的顺序给出的位序列写入当前字节位置内当前位偏移的流。 参数的上64 - numBits位被忽略。 位偏移提前numBits并减少模8。注意,0的位偏移始终表示字节的最高有效位,并且在遇到它们时按位顺序写出位字节。 因此,位写入总是以网络字节顺序有效。 忽略实际的流字节顺序设置。

        位数据可以无限期地累积在存储器中,直到flushBefore 。 此时,将写入刷新位置之前的所有位数据。

        如果在将字节刷新到目标时从未设置过特定字节的任何位,则这些位将自动设置为0。

        参数
        bits - 包含要写入的位的 long ,从位 long的位开始, numBits - 1最低位。
        numBits - 介于0和64之间的 int (含)。
        异常
        IllegalArgumentException - 如果 numBits不在0到64之间(包括0和64)。
        IOException - 如果发生I / O错误。
      • flushBefore

        void flushBefore​(long pos)
                  throws IOException
        将给定位置之前的所有数据刷新到基础目标,例如OutputStream或File 。 试图寻找流的刷新部分将导致IndexOutOfBoundsException 。
        Specified by:
        flushBefore在接口 ImageInputStream
        参数
        pos - 包含可以刷新到目标的流前缀长度的 long 。
        异常
        IndexOutOfBoundsException - 如果 pos位于流的刷新部分或超过当前流位置。
        IOException - 如果发生I / O错误。