模块 java.desktop

接口 ImageOutputStream

所有父级接口:
AutoCloseable , Closeable , DataInput , DataOutput , ImageInputStream
所有已知的实现类:
FileCacheImageOutputStream , FileImageOutputStream , ImageOutputStreamImpl , MemoryCacheImageOutputStream

public interface ImageOutputStream extends ImageInputStream , DataOutput
ImageWriter s 使用的可搜索输出流接口。各种输出目标,例如 OutputStream s 和 File s,以及未来的快速 I/O 目标可能被这个接口的合适实现“包装”以供图像 I/O API 使用。

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

参见:
  • 方法详情

    • write

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

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

      指定者:
      write 在接口 DataOutput
      参数:
      b - 一个 int,其低 8 位将被写入。
      抛出:
      IOException - 如果发生 I/O 错误。
    • write

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

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

      指定者:
      write 在接口 DataOutput
      参数:
      b - 要写入的 byte 数组。
      抛出:
      NullPointerException - 如果 bnull
      IOException - 如果发生 I/O 错误。
    • write

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

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

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

      void writeBoolean(boolean v) throws IOException
      boolean 值写入流。如果v为真,则写入值(byte)1;如果 v 为假,则写入值 (byte)0

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

      指定者:
      writeBoolean 在接口 DataOutput
      参数:
      v - 要写入的 boolean
      抛出:
      IOException - 如果发生 I/O 错误。
    • writeByte

      void writeByte(int v) throws IOException
      v 的 8 个低位写入流。 v 的 24 位高位被忽略。 (这意味着 writeBytewrite 对整数参数做完全相同的事情。)

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

      指定者:
      writeByte 在接口 DataOutput
      参数:
      v - 一个 int 包含要写入的字节值。
      抛出:
      IOException - 如果发生 I/O 错误。
    • writeShort

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

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

      指定者:
      writeShort 在接口 DataOutput
      参数:
      v - 一个 int 包含要写入的短值。
      抛出:
      IOException - 如果发生 I/O 错误。
    • writeChar

      void writeChar(int v) throws IOException
      此方法是 writeShort 的同义词。
      指定者:
      writeChar 在接口 DataOutput
      参数:
      v - 一个 int 包含要写入的 char(unsigned short)值。
      抛出:
      IOException - 如果发生 I/O 错误。
      参见:
    • writeInt

      void writeInt(int v) throws IOException
      v 的 32 位写入流。如果流使用网络字节顺序,写入的字节按顺序为:
       (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。

      指定者:
      writeInt 在接口 DataOutput
      参数:
      v - 包含要写入的值的 int
      抛出:
      IOException - 如果发生 I/O 错误。
    • writeLong

      void writeLong(long v) throws IOException
      v 的 64 位写入流。如果流使用网络字节顺序,写入的字节按顺序为:
       (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。

      指定者:
      writeLong 在接口 DataOutput
      参数:
      v - 包含要写入的值的 long
      抛出:
      IOException - 如果发生 I/O 错误。
    • writeFloat

      void writeFloat(float v) throws IOException
      将由四个字节组成的 float 值写入输出流。它这样做就好像它首先完全按照 Float.floatToIntBits 方法的方式将此 float 值转换为 int,然后完全按照 writeInt 方法的方式写入 int 值。

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

      指定者:
      writeFloat 在接口 DataOutput
      参数:
      v - 包含要写入的值的 float
      抛出:
      IOException - 如果发生 I/O 错误。
    • writeDouble

      void writeDouble(double v) throws IOException
      将由四个字节组成的 double 值写入输出流。它这样做就好像它首先完全按照 Double.doubleToLongBits 方法的方式将此 double 值转换为 long,然后完全按照 writeLong 方法的方式写入 long 值。

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

      指定者:
      writeDouble 在接口 DataOutput
      参数:
      v - 包含要写入的值的 double
      抛出:
      IOException - 如果发生 I/O 错误。
    • writeBytes

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

      如果 s.length 为零,则不写入任何字节。否则先写入字符s[0],再写入s[1],以此类推;最后写入的字符是 s[s.length-1] 。对于每个字符,写入一个字节,即低位字节,完全按照 writeByte 方法的方式。忽略字符串中每个字符的高八位。

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

      指定者:
      writeBytes 在接口 DataOutput
      参数:
      s - 包含要写入的值的 String
      抛出:
      NullPointerException - 如果 snull
      IOException - 如果发生 I/O 错误。
    • writeChars

      void writeChars(String  s) throws IOException
      将字符串写入输出流。对于字符串 s 中的每个字符,按顺序将两个字节写入输出流,并根据当前字节顺序设置进行排序。如果使用网络字节序,高位字节先写;否则顺序相反。如果 snull ,则抛出 NullPointerException

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

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

      指定者:
      writeChars 在接口 DataOutput
      参数:
      s - 包含要写入的值的 String
      抛出:
      NullPointerException - 如果 snull
      IOException - 如果发生 I/O 错误。
    • writeUTF

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

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

       (byte)c
       

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

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

      如果字符 c\u0800uffff 范围内,则它由三个字节表示,按所示顺序写入:

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

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

      当前字节顺序设置将被忽略。

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

      Note:该方法不应该用于使用标准UTF-8的图像格式的实现,因为这里使用的修改后的UTF-8与标准UTF-8不兼容。

      指定者:
      writeUTF 在接口 DataOutput
      参数:
      s - 包含要写入的值的 String
      抛出:
      NullPointerException - 如果 snull
      UTFDataFormatException - 如果 s 的修改后的 UTF-8 表示需要超过 65536 字节。
      IOException - 如果发生 I/O 错误。
    • writeShorts

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      参数:
      d - 要写入的 doubles 数组。
      off - 数据中的起始偏移量。
      len - 要写入的 double 的数量。
      抛出:
      IndexOutOfBoundsException - 如果 off 为负,len 为负,或 off + len 大于 d.length
      NullPointerException - 如果 dnull
      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 包含要写入的位,从位置 numBits - 1 的位开始一直到最低有效位。
      numBits - 一个 int 介于 0 和 64 之间,包括在内。
      抛出:
      IllegalArgumentException - 如果 numBits 不在 0 到 64 之间,包括 0 和 64。
      IOException - 如果发生 I/O 错误。
    • flushBefore

      void flushBefore(long pos) throws IOException
      将给定位置之前的所有数据刷新到基础目标,例如 OutputStreamFile 。尝试寻找流的刷新部分将导致 IndexOutOfBoundsException
      指定者:
      flushBefore 在接口 ImageInputStream
      参数:
      pos - 一个 long 包含可以刷新到目的地的流前缀的长度。
      抛出:
      IndexOutOfBoundsException - 如果 pos 位于流的刷新部分或超过当前流位置。
      IOException - 如果发生 I/O 错误。