JavaTM 2 Platform
Standard Ed. 5.0

javax.imageio.stream
インタフェース ImageOutputStream

すべてのスーパーインタフェース:
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 バイトを、ネットワークバイト順で出力ストリームに書き込みます。
 
インタフェース javax.imageio.stream.ImageInputStream から継承されたメソッド
close, flush, getBitOffset, getByteOrder, getFlushedPosition, getStreamPosition, isCached, isCachedFile, isCachedMemory, length, mark, read, read, read, readBit, readBits, readBoolean, readByte, readBytes, readChar, readDouble, readFloat, readFully, readFully, readFully, readFully, readFully, readFully, readFully, readFully, readInt, readLine, readLong, readShort, readUnsignedByte, readUnsignedInt, readUnsignedShort, readUTF, reset, seek, setBitOffset, setByteOrder, skipBytes, skipBytes
 

メソッドの詳細

write

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

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

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

write

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

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

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

write

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

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

定義:
インタフェース DataOutput 内の write
パラメータ:
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 です。

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

writeByte

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

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

定義:
インタフェース DataOutput 内の writeByte
パラメータ:
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 です。

定義:
インタフェース DataOutput 内の writeShort
パラメータ:
v - 書き込まれる short 値を含む int
例外:
IOException - 入出力エラーが発生した場合

writeChar

void writeChar(int v)
               throws IOException
このメソッドは writeShort と同義です。

定義:
インタフェース DataOutput 内の writeChar
パラメータ:
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 です。

定義:
インタフェース DataOutput 内の writeInt
パラメータ:
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 です。

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

writeFloat

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

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

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

writeDouble

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

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

定義:
インタフェース DataOutput 内の writeDouble
パラメータ:
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 です。

定義:
インタフェース DataOutput 内の writeBytes
パラメータ:
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 です。

定義:
インタフェース DataOutput 内の writeChars
パラメータ:
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\u0800uffff の範囲にある場合、次の順序で書き込まれる 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 を使用するイメージ形式の実装では使用しないでください。

定義:
インタフェース DataOutput 内の writeUTF
パラメータ:
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 - 書き込まれる double 配列
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 がスローされます。

定義:
インタフェース ImageInputStream 内の flushBefore
パラメータ:
pos - 出力先にフラッシュされるファイル接頭辞の長さを含む long
例外:
IndexOutOfBoundsException - pos がストリームのフラッシュ部分にあるか、または現在のストリーム位置を通過した場合
IOException - 入出力エラーが発生した場合

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。