模块 java.desktop

类 ImageOutputStreamImpl

java.lang.Object
javax.imageio.stream.ImageInputStreamImpl
javax.imageio.stream.ImageOutputStreamImpl
所有已实现的接口:
Closeable , DataInput , DataOutput , AutoCloseable , ImageInputStream , ImageOutputStream
已知子类:
FileCacheImageOutputStream , FileImageOutputStream , MemoryCacheImageOutputStream

public abstract class ImageOutputStreamImpl extends ImageInputStreamImpl implements ImageOutputStream
实现 ImageOutputStream 接口的抽象类。此类旨在减少子类必须实现的方法数量。
  • 构造方法详细信息

    • ImageOutputStreamImpl

      public ImageOutputStreamImpl()
      构造一个 ImageOutputStreamImpl
  • 方法详情

    • write

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

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

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

      public void writeBoolean(boolean v) throws IOException
      从接口 ImageOutputStream 复制的描述
      boolean 值写入流。如果v为真,则写入值(byte)1;如果 v 为假,则写入值 (byte)0

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

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

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

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

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

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

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

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

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

      public void writeInt(int v) throws IOException
      从接口 ImageOutputStream 复制的描述
      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
      指定者:
      writeInt 在接口 ImageOutputStream
      参数:
      v - 包含要写入的值的 int
      抛出:
      IOException - 如果发生 I/O 错误。
    • writeLong

      public void writeLong(long v) throws IOException
      从接口 ImageOutputStream 复制的描述
      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
      指定者:
      writeLong 在接口 ImageOutputStream
      参数:
      v - 包含要写入的值的 long
      抛出:
      IOException - 如果发生 I/O 错误。
    • writeFloat

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      public void writeUTF(String  s) throws IOException
      从接口 ImageOutputStream 复制的描述
      以网络字节顺序将两个字节的长度信息写入输出流,后跟字符串 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
      指定者:
      writeUTF 在接口 ImageOutputStream
      参数:
      s - 包含要写入的值的 String
      抛出:
      UTFDataFormatException - 如果 s 的修改后的 UTF-8 表示需要超过 65536 字节。
      IOException - 如果发生 I/O 错误。
    • writeShorts

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

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

      指定者:
      writeShorts 在接口 ImageOutputStream
      参数:
      s - 要写入的 short 数组。
      off - 数据中的起始偏移量。
      len - 要写入的 short 的数量。
      抛出:
      IOException - 如果发生 I/O 错误。
    • writeChars

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

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

      指定者:
      writeChars 在接口 ImageOutputStream
      参数:
      c - 要写入的 char 数组。
      off - 数据中的起始偏移量。
      len - 要写入的 char 的数量。
      抛出:
      IOException - 如果发生 I/O 错误。
    • writeInts

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

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

      指定者:
      writeInts 在接口 ImageOutputStream
      参数:
      i - 要写入的 int 数组。
      off - 数据中的起始偏移量。
      len - 要写入的 int 的数量。
      抛出:
      IOException - 如果发生 I/O 错误。
    • writeLongs

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

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

      指定者:
      writeLongs 在接口 ImageOutputStream
      参数:
      l - 要写入的 long 数组。
      off - 数据中的起始偏移量。
      len - 要写入的 long 的数量。
      抛出:
      IOException - 如果发生 I/O 错误。
    • writeFloats

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

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

      指定者:
      writeFloats 在接口 ImageOutputStream
      参数:
      f - 要写入的 float 数组。
      off - 数据中的起始偏移量。
      len - 要写入的 float 的数量。
      抛出:
      IOException - 如果发生 I/O 错误。
    • writeDoubles

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

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

      指定者:
      writeDoubles 在接口 ImageOutputStream
      参数:
      d - 要写入的 doubles 数组。
      off - 数据中的起始偏移量。
      len - 要写入的 double 的数量。
      抛出:
      IOException - 如果发生 I/O 错误。
    • writeBit

      public void writeBit(int bit) throws IOException
      从接口 ImageOutputStream 复制的描述
      将由参数的最低有效位给出的单个位写入当前字节位置内当前位偏移处的流。忽略参数的高 31 位。给定的位替换该位置的前一位。位偏移量提前 1 并减少模 8。

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

      指定者:
      writeBit 在接口 ImageOutputStream
      参数:
      bit - 一个 int,其最低有效位将被写入流。
      抛出:
      IOException - 如果发生 I/O 错误。
    • writeBits

      public void writeBits(long bits, int numBits) throws IOException
      从接口 ImageOutputStream 复制的描述
      将由 bits 参数的 numBits 最低有效位以从左到右的顺序给出的位序列写入当前字节位置内当前位偏移量的流中。忽略参数的高 64 - numBits 位。位偏移量增加 numBits 并减少模 8。请注意,位偏移量 0 始终表示字节的最高有效位,并且位的字节在遇到时按顺序写出。因此,位写入总是有效地按网络字节顺序进行。忽略实际的流字节顺序设置。

      位数据可能会无限期地累积在内存中,直到flushBefore被调用。届时,刷新位置之前的所有位数据将被写入。

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

      指定者:
      writeBits 在接口 ImageOutputStream
      参数:
      bits - 一个 long 包含要写入的位,从位置 numBits - 1 的位开始一直到最低有效位。
      numBits - 一个 int 介于 0 和 64 之间,包括在内。
      抛出:
      IOException - 如果发生 I/O 错误。
    • flushBits

      protected final void flushBits() throws IOException
      如果位偏移量不为零,则强制当前字节中的剩余位为 0 并将流位置前进一位。此方法应在write(int)write(byte[], int, int) 方法的开头由子类调用。
      抛出:
      IOException - 如果发生 I/O 错误。