モジュール java.desktop
パッケージ javax.imageio.stream

インタフェースImageOutputStream

  • すべてのスーパー・インタフェース:
    AutoCloseable, Closeable, DataInput, DataOutput, ImageInputStream
    既知のすべての実装クラス:
    FileCacheImageOutputStream, FileImageOutputStream, ImageOutputStreamImpl, MemoryCacheImageOutputStream

    public interface ImageOutputStream
    extends ImageInputStream, DataOutput
    ImageWriterで使用されるシーク可能な出力ストリーム・インタフェースです。 OutputStreamFileなどのさまざまな出力先、および将来の高速な入出力先をこのインタフェースの適切な実装でラップすることで、イメージ入出力APIから使用可能にできます。

    標準のOutputStreamとは異なり、ImageOutputStreamは対応するImageInputStreamを拡張します。 したがって、書き込まれた形式のままでストリームから読み込むことができます。 同一のシークおよびフラッシュ位置が読み込みと書込みの両方に適用されます。ただし、バイト整列された書込み前のゼロ以外のビット・オフセットに対応するセマンティックスと、バイト整列された読込み前のゼロ以外のビット・オフセットに対応するセマンティックスは必然的に異なります。 バイトを読み込む場合、すべてのビット・オフセットは読み込む前に0に設定され、バイトを書き込む場合、ゼロ以外のビット・オフセットではバイトの残りのビットが0として書き込まれます。 バイト整列された書込みは、次のバイト位置から開始されます。

    関連項目:
    ImageInputStream
    • メソッドのサマリー

      修飾子と型 メソッド 説明
      void flushBefore​(long pos)
      指定された位置より前のデータをすべて、OutputStreamFileなどの基本となる出力先にフラッシュします。
      void write​(byte[] b)
      バイトのシーケンスをストリームの現在位置に書き込みます。
      void write​(byte[] b, int off, int len)
      バイトのシーケンスをストリームの現在位置に書き込みます。
      void write​(int b)
      ストリームの現在の位置に1バイト書き込みます。
      void writeBit​(int bit)
      引数の最下位ビットで指定された1ビットを、ストリームの現在のバイト位置の現在のビット・オフセットに書き込みます。
      void writeBits​(long bits, int numBits)
      bits引数の下位numBitsビットのビット・シーケンスを左から右に、ストリームの現在のバイト位置の現在のビット・オフセットに書き込みます。
      void writeBoolean​(boolean v)
      ストリームにboolean値を書き込みます。
      void writeByte​(int v)
      vの下位8ビットをストリームに書き込みます。
      void writeBytes​(String s)
      文字列を出力ストリームに書き込みます。
      void writeChar​(int v)
      このメソッドはwriteShortと同義です。
      void writeChars​(char[] c, int off, int len)
      charのシーケンスをストリームの現在位置に書き込みます。
      void writeChars​(String s)
      文字列を出力ストリームに書き込みます。
      void writeDouble​(double v)
      4バイトで構成されるdouble値を出力ストリームに書き込みます。
      void writeDoubles​(double[] d, int off, int len)
      doubleのシーケンスをストリームの現在位置に書き込みます。
      void writeFloat​(float v)
      4バイトで構成されるfloat値を出力ストリームに書き込みます。
      void writeFloats​(float[] f, int off, int len)
      floatのシーケンスをストリームの現在位置に書き込みます。
      void writeInt​(int v)
      vの32ビットをストリームに書き込みます。
      void writeInts​(int[] i, int off, int len)
      intのシーケンスをストリームの現在位置に書き込みます。
      void writeLong​(long v)
      vの64ビットをストリームに書き込みます。
      void writeLongs​(long[] l, int off, int len)
      longのシーケンスをストリームの現在位置に書き込みます。
      void writeShort​(int v)
      vの下位16ビットをストリームに書き込みます。
      void writeShorts​(short[] s, int off, int len)
      shortのシーケンスをストリームの現在位置に書き込みます。
      void writeUTF​(String s)
      長さ情報の2バイトを、ネットワーク・バイト順で出力ストリームに書き込みます。その後ろには、文字列s内の各文字の 修正UTF-8表現が続きます。
    • メソッドの詳細

      • write

        void write​(int b)
            throws IOException
        ストリームの現在の位置に1バイト書き込みます。 bの上位24ビットは無視されます。

        ストリーム内のビット・オフセットがゼロでない場合、現在のバイトの残りは0でパディングされ、最初に書き込まれます。 書込み後は、ビット・オフセットは0です。 実装側は、ImageOutputStreamImplflushBitsメソッドを使用してこれを保証できます。

        定義:
        write、インタフェース: DataOutput
        パラメータ:
        b - 下位8ビットが書き込まれるint
        例外:
        IOException - 入出力エラーが発生した場合。
      • write

        void write​(byte[] b)
            throws IOException
        バイトのシーケンスをストリームの現在位置に書き込みます。 b.lengthが0の場合、何も書き込みません。 バイトb[0]を最初に書き込み、次にバイトb[1]を書き込む、という具合になります。

        ストリーム内のビット・オフセットがゼロでない場合、現在のバイトの残りは0でパディングされ、最初に書き込まれます。 書込み後は、ビット・オフセットは0です。

        定義:
        write、インタフェース: DataOutput
        パラメータ:
        b - 書き込まれるbyte配列。
        例外:
        NullPointerException - bnullである場合。
        IOException - 入出力エラーが発生した場合。
      • write

        void write​(byte[] b,
                   int off,
                   int len)
            throws IOException
        バイトのシーケンスをストリームの現在位置に書き込みます。 lenが0の場合、何も書き込みません。 バイトb[off]を最初に書き込み、次にバイトb[off+1]を書き込む、という具合になります。

        ストリーム内のビット・オフセットがゼロでない場合、現在のバイトの残りは0でパディングされ、最初に書き込まれます。 書込み後は、ビット・オフセットは0です。 実装側は、ImageOutputStreamImplflushBitsメソッドを使用してこれを保証できます。

        定義:
        write、インタフェース: DataOutput
        パラメータ:
        b - 書き込まれるbyte配列。
        off - データの開始オフセット。
        len - 書き込むbyte数。
        例外:
        IndexOutOfBoundsException - offが負の値の場合、lenが負の値の場合、またはoff+lenb.lengthより大きい場合。
        NullPointerException - bnullである場合。
        IOException - 入出力エラーが発生した場合。
      • writeBoolean

        void writeBoolean​(boolean v)
                   throws IOException
        ストリームにboolean値を書き込みます。 vがtrueの場合は値(byte)1が書き込まれ、vがfalseの場合は値(byte)0が書き込まれます。

        ストリーム内のビット・オフセットがゼロでない場合、現在のバイトの残りは0でパディングされ、最初に書き込まれます。 書込み後は、ビット・オフセットは0です。

        定義:
        writeBoolean、インタフェース: DataOutput
        パラメータ:
        v - 書き込まれるboolean
        例外:
        IOException - 入出力エラーが発生した場合。
      • writeByte

        void writeByte​(int v)
                throws IOException
        vの下位8ビットをストリームに書き込みます。 vの上位24ビットは無視されます。 これはwriteByteが、整数引数のwriteとまったく同じであることを意味します。

        ストリーム内のビット・オフセットがゼロでない場合、現在のバイトの残りは0でパディングされ、最初に書き込まれます。 書込み後は、ビット・オフセットは0です。

        定義:
        writeByte、インタフェース: DataOutput
        パラメータ:
        v - 書き込まれるバイト値を含むint
        例外:
        IOException - 入出力エラーが発生した場合。
      • 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 - 書き込まれるshort値を含むint
        例外:
        IOException - 入出力エラーが発生した場合。
      • writeChar

        void writeChar​(int v)
                throws IOException
        このメソッドはwriteShortと同義です。
        定義:
        writeChar、インタフェース: DataOutput
        パラメータ:
        v - 書き込まれるchar (符号なしshort)値を含むint
        例外:
        IOException - 入出力エラーが発生した場合。
        関連項目:
        writeShort(int)
      • 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 - 入出力エラーが発生した場合。
      • 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 - 入出力エラーが発生した場合。
      • writeFloat

        void writeFloat​(float v)
                 throws IOException
        4バイトで構成されるfloat値を出力ストリームに書き込みます。 これは、最初にこのfloat値をFloat.floatToIntBitsメソッドと同じ方法でintに変換し、その後int値をwriteIntメソッドと同じ方法で書き込むようにして行われます。

        ストリーム内のビット・オフセットがゼロでない場合、現在のバイトの残りは0でパディングされ、最初に書き込まれます。 書込み後は、ビット・オフセットは0です。

        定義:
        writeFloat、インタフェース: DataOutput
        パラメータ:
        v - 書き込まれる値を含むfloat
        例外:
        IOException - 入出力エラーが発生した場合。
      • writeDouble

        void writeDouble​(double v)
                  throws IOException
        4バイトで構成されるdouble値を出力ストリームに書き込みます。 これは、Double.doubleToLongBitsメソッドの方法とまったく同じ方法で、このdouble値を最初にlongに変換し、writeLongメソッドとまったく同じ方法でlong値を書き込むかのように行います。

        ストリーム内のビット・オフセットがゼロでない場合、現在のバイトの残りは0でパディングされ、最初に書き込まれます。 書込み後は、ビット・オフセットは0です。

        定義:
        writeDouble、インタフェース: DataOutput
        パラメータ:
        v - 書き込まれる値を含むdouble
        例外:
        IOException - 入出力エラーが発生した場合。
      • writeBytes

        void writeBytes​(String s)
                 throws IOException
        文字列を出力ストリームに書き込みます。 文字列sの各文字が順番に取り出され、1バイトが出力ストリームに書き込まれます。 snullの場合、NullPointerExceptionがスローされます。

        s.lengthがゼロの場合、バイトは書き込まれません。 それ以外の場合は、最初に文字s[0]が書き込まれ、次にs[1]という具合に続き、最後に書き込まれる文字はs[s.length-1]になります。 各文字については、writeByteメソッドとまったく同じ方法で、1バイト、つまり下位バイトが書き込まれます。 文字列内の各文字の上位8ビットは無視されます。

        ストリーム内のビット・オフセットがゼロでない場合、現在のバイトの残りは0でパディングされ、最初に書き込まれます。 書込み後は、ビット・オフセットは0です。

        定義:
        writeBytes、インタフェース: DataOutput
        パラメータ:
        s - 書き込まれる値を含むString
        例外:
        NullPointerException - snullの場合。
        IOException - 入出力エラーが発生した場合。
      • writeChars

        void writeChars​(String s)
                 throws IOException
        文字列を出力ストリームに書き込みます。 文字列sの各文字が、順番に取り出され、現在のバイト順の設定に従った順序で、2バイトが出力ストリームに書き込まれます。 ネットワーク・バイト順が使用されると高位バイトが最初に書き込まれ、そうでない場合は逆になります。 snullの場合、NullPointerExceptionがスローされます。

        s.lengthがゼロの場合、バイトは書き込まれません。 それ以外の場合は、最初に文字s[0]が書き込まれ、次にs[1]という具合に続き、最後に書き込まれる文字はs[s.length-1]になります。

        ストリーム内のビット・オフセットがゼロでない場合、現在のバイトの残りは0でパディングされ、最初に書き込まれます。 書込み後は、ビット・オフセットは0です。

        定義:
        writeChars、インタフェース: DataOutput
        パラメータ:
        s - 書き込まれる値を含むString
        例外:
        NullPointerException - snullの場合。
        IOException - 入出力エラーが発生した場合。
      • writeUTF

        void writeUTF​(String s)
               throws IOException
        長さ情報の2バイトを、ネットワーク・バイト順で出力ストリームに書き込みます。その後ろには、文字列s内の各文字の 修正UTF-8表現が続きます。 snullの場合、NullPointerExceptionがスローされます。 文字列s内の各文字は、文字の値に基づいて、1、2、または3バイトのグループに変換されます。

        文字c\u0001 - \u007fの範囲にある場合、次のような1バイトで表現されます。

         (byte)c
         

        文字c\u0000の場合や、\u0080 - \u07ffの範囲にある場合には、次の順序で書き込まれる2バイトによって表されます。

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

        文字c\u0800 - uffffの範囲にある場合、次の順序で書き込まれる3バイトによって表されます。

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

        まず、sのすべての文字を表すのに必要な総バイト数が計算されます。 この数値が65535を超える場合は、UTFDataFormatExceptionがスローされます。 それ以外の場合は、この長さがwriteShortメソッドとまったく同じ方法で出力ストリームに書き込まれます。次に、文字列s内の各文字の1、2、または3バイト表現が書き込まれます。

        現在のバイト順の設定は無視されます。

        ストリーム内のビット・オフセットがゼロでない場合、現在のバイトの残りは0でパディングされ、最初に書き込まれます。 書込み後は、ビット・オフセットは0です。

        注: ここで使用される修正UTF-8は標準UTF-8と互換性がありません。このため、標準UTF-8を使用するイメージ形式の実装ではこのメソッドを使用しないでください。

        定義:
        writeUTF、インタフェース: DataOutput
        パラメータ:
        s - 書き込まれる値を含むString
        例外:
        NullPointerException - snullの場合。
        UTFDataFormatException - sの修正UTF-8表現に65536を超えるバイトが必要な場合。
        IOException - 入出力エラーが発生した場合。
      • writeShorts

        void writeShorts​(short[] s,
                         int off,
                         int len)
                  throws IOException
        shortのシーケンスをストリームの現在位置に書き込みます。 lenが0の場合、何も書き込みません。 最初にshort s[off]、次にshort s[off+1]、という順序で書込みが行われます。 ストリームのバイト順を使用して、個々のバイトを書き込む順番が決定されます。

        ストリーム内のビット・オフセットがゼロでない場合、現在のバイトの残りは0でパディングされ、最初に書き込まれます。 書込み後は、ビット・オフセットは0です。

        パラメータ:
        s - 書き込まれるshort配列。
        off - データの開始オフセット。
        len - 書き込むshort数。
        例外:
        IndexOutOfBoundsException - offが負の値の場合、lenが負の値の場合、またはoff+lens.lengthより大きい場合。
        NullPointerException - snullの場合。
        IOException - 入出力エラーが発生した場合。
      • writeChars

        void writeChars​(char[] c,
                        int off,
                        int len)
                 throws IOException
        charのシーケンスをストリームの現在位置に書き込みます。 lenが0の場合、何も書き込みません。 最初にchar c[off]、次にchar c[off+1]、という順序で書込みが行われます。 ストリームのバイト順を使用して、個々のバイトを書き込む順番が決定されます。

        ストリーム内のビット・オフセットがゼロでない場合、現在のバイトの残りは0でパディングされ、最初に書き込まれます。 書込み後は、ビット・オフセットは0です。

        パラメータ:
        c - 書き込まれるchar配列。
        off - データの開始オフセット。
        len - 書き込むchar数。
        例外:
        IndexOutOfBoundsException - offが負の値の場合、lenが負の値の場合、またはoff+lenc.lengthより大きい場合。
        NullPointerException - cnullの場合。
        IOException - 入出力エラーが発生した場合。
      • 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+leni.lengthより大きい場合。
        NullPointerException - inullの場合。
        IOException - 入出力エラーが発生した場合。
      • 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+lenl.lengthより大きい場合。
        NullPointerException - lnullの場合。
        IOException - 入出力エラーが発生した場合。
      • writeFloats

        void writeFloats​(float[] f,
                         int off,
                         int len)
                  throws IOException
        floatのシーケンスをストリームの現在位置に書き込みます。 lenが0の場合、何も書き込みません。 最初にfloat f[off]、次にfloat f[off+1]、という順序で書込みが行われます。 ストリームのバイト順を使用して、個々のバイトを書き込む順番が決定されます。

        ストリーム内のビット・オフセットがゼロでない場合、現在のバイトの残りは0でパディングされ、最初に書き込まれます。 書込み後は、ビット・オフセットは0です。

        パラメータ:
        f - 書き込まれるfloat配列。
        off - データの開始オフセット。
        len - 書き込むfloat数。
        例外:
        IndexOutOfBoundsException - offが負の値の場合、lenが負の値の場合、またはoff+lenf.lengthより大きい場合。
        NullPointerException - fnullの場合。
        IOException - 入出力エラーが発生した場合。
      • writeDoubles

        void writeDoubles​(double[] d,
                          int off,
                          int len)
                   throws IOException
        doubleのシーケンスをストリームの現在位置に書き込みます。 lenが0の場合、何も書き込みません。 最初にdouble d[off]、次にdouble d[off+1]、という順序で書込みが行われます。 ストリームのバイト順を使用して、個々のバイトを書き込む順番が決定されます。

        ストリーム内のビット・オフセットがゼロでない場合、現在のバイトの残りは0でパディングされ、最初に書き込まれます。 書込み後は、ビット・オフセットは0です。

        パラメータ:
        d - 書き込まれるdoubles配列。
        off - データの開始オフセット。
        len - 書き込むdouble数。
        例外:
        IndexOutOfBoundsException - offが負の値の場合、lenが負の値の場合、またはoff+lend.lengthより大きい場合。
        NullPointerException - dnullの場合。
        IOException - 入出力エラーが発生した場合。
      • writeBit

        void writeBit​(int bit)
               throws IOException
        引数の最下位ビットで指定された1ビットを、ストリームの現在のバイト位置の現在のビット・オフセットに書き込みます。 引数の上位31ビットは無視されます。 指定されたビットにより、その位置にあった以前のビットは置換されます。 ビット・オフセットは1ずつ増加し、8を法として減分します。

        特定のバイトの任意のビットが、バイトが出力先にフラッシュされる時点で設定されていなかった場合、これらのビットは自動的に0に設定されます。

        パラメータ:
        bit - その最下位ビットがストリームに書き込まれるint
        例外:
        IOException - 入出力エラーが発生した場合。
      • writeBits

        void writeBits​(long bits,
                       int numBits)
                throws IOException
        bits引数の下位numBitsビットのビット・シーケンスを左から右に、ストリームの現在のバイト位置の現在のビット・オフセットに書き込みます。 引数の上位64 - numBitsビットは無視されます。 ビット・オフセットはnumBitsだけ増加し、8を法として減分します。 ビット・オフセット0は常にバイトの最高位ビットを示し、ビットのバイトは検出された順番に書き込まれます。 したがってビットの書込みは、事実上常にネットワーク・バイト順です。 実際のストリーム・バイト順の設定は無視されます。

        ビット・データは、flushBeforeが呼び出されるまでメモリーに無限に蓄積されます。 呼び出された時点で、フラッシュ位置より前のビット・データがすべて書き込まれます。

        特定のバイトの任意のビットが、バイトが出力先にフラッシュされる時点で設定されていなかった場合、これらのビットは自動的に0に設定されます。

        パラメータ:
        bits - ビット位置numBits - 1から最下位ビットまでが書き込まれるビットを含むlong
        numBits - 0から64までのint
        例外:
        IllegalArgumentException - numBitsが0から64の範囲内にない場合。
        IOException - 入出力エラーが発生した場合。
      • flushBefore

        void flushBefore​(long pos)
                  throws IOException
        指定された位置より前のデータをすべて、OutputStreamFileなどの基本となる出力先にフラッシュします。 ストリームのフラッシュ部分にシークするとIndexOutOfBoundsExceptionがスローされます。
        定義:
        flushBefore、インタフェース: ImageInputStream
        パラメータ:
        pos - 出力先にフラッシュされるストリーム接頭辞の長さを含むlong
        例外:
        IndexOutOfBoundsException - posがストリームのフラッシュ部分にあるか、または現在のストリーム位置を通過した場合。
        IOException - 入出力エラーが発生した場合。