Module  java.desktop
软件包  javax.imageio.stream

Interface ImageOutputStream

  • All Superinterfaces:
    AutoCloseableCloseableDataInputDataOutputImageInputStream
    所有已知实现类:
    FileCacheImageOutputStreamFileImageOutputStreamImageOutputStreamImplMemoryCacheImageOutputStream


    public interface ImageOutputStream
    extends ImageInputStream, DataOutput
    一个可寻求的输出流接口,供ImageWriter使用。 诸如OutputStreamFile的各种输出目的地以及未来的快速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 - 要写入低8位的 int
        异常
        IOException - 如果发生I / O错误。
      • write

        void write​(byte[] b)
            throws IOException
        在当前位置写入一串字节。 如果b.length为0,则不会写入。 字节b[0]首先写入,然后字节b[1]等等。

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

        Specified by:
        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。 实施者可以使用flushBits的方法ImageOutputStreamImpl来保证这一点。

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

        void writeBoolean​(boolean v)
                   throws IOException
        向流中写入一个boolean值。 如果v为真,则写入值(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
        v的16位低位写入流。 v的16位v被忽略。 如果流使用网络字节顺序,则按顺序写入的字节为:
          (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
        v的32位写入流。 如果流使用网络字节顺序,则按顺序写入的字节为:
          (byte)((v >> 24) & 0xff)
         (byte)((v >> 16) & 0xff)
         (byte)((v >> 8) & 0xff)
         (byte)(v & 0xff) 
        Otheriwse,写入的字节将是:
          (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
        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。

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

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

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

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

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

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

        Specified by:
        writeDouble在接口 DataOutput
        参数
        v - a 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方式。 字符串中每个字符的高8位被忽略。

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

        Specified by:
        writeBytes接口 DataOutput
        参数
        s - a 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。

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

        void writeUTF​(String s)
               throws IOException
        以网络字节顺序将两个字节的长度信息写入输出流,后跟字符串s中每个字符的modified 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。

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

        Specified by:
        writeUTF在接口 DataOutput
        参数
        s - a String包含要写入的值。
        异常
        NullPointerException - 如果 snull
        UTFDataFormatException -如果的改性UTF-8表示 s需要超过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 - shortlen的数量。
        异常
        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, len写任何内容。 char c[off]是先写的,然后是char c[off + 1] ,等等。 流的字节顺序用于确定写入单个字节的顺序。

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

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

        void writeInts​(int[] i,
                       int off,
                       int len)
                throws IOException
        在当前位置写入流的序列。 如果len为0,则不会写入。 int i[off]先写,然后是int i[off + 1] ,等等。 流的字节顺序用于确定写入单个字节的顺序。

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

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

        void writeLongs​(long[] l,
                        int off,
                        int len)
                 throws IOException
        在当前位置写入流的序列。 如果len为0,则不会写入。 l[off]先写,然后长l[off + 1] ,等等。 流的字节顺序用于确定写入单个字节的顺序。

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

        参数
        l - 要写入的 long的数组。
        off - 数据中的起始偏移量。
        len - longlen的数量。
        异常
        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 - floatlen的数量。
        异常
        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, len写任何内容。 d[off]先写,然后双d[off + 1]等等。 流的字节顺序用于确定写入单个字节的顺序。

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

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

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

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

        参数
        bit - 其最低有效位 bitint
        异常
        IOException - 如果发生I / O错误。
      • writeBits

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

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

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

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

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