public interface ImageInputStream extends DataInput, Closeable
ImageReader
で使用されるシーク可能な入力ストリームインタフェースです。InputStream
や File
などのさまざまな入力ソース、および将来の高速な入出力ソースを、このインタフェースの適切な実装で「ラップ」することで、イメージ入出力 API から使用可能にできます。修飾子と型 | メソッドと説明 |
---|---|
void |
close()
ストリームを閉じます。
|
void |
flush()
現在のストリーム位置より前の初期のストリーム位置を破棄します。
|
void |
flushBefore(long pos)
指示された位置より前の初期のストリーム部分を破棄します。
|
int |
getBitOffset()
現在のビットオフセットを 0 から 7 までの整数として返します。
|
ByteOrder |
getByteOrder()
このストリームから読み込まれるデータのバイト順を、
java.nio.ByteOrder 列挙のインスタンスとして返します。 |
long |
getFlushedPosition()
シークが実行されるストリーム内の一番初期の位置を返します。
|
long |
getStreamPosition()
ストリームの現在のバイト位置を返します。
|
boolean |
isCached()
逆シークを可能にするために、この
ImageInputStream がデータ自体をキャッシュに格納する場合は true を返します。 |
boolean |
isCachedFile()
この
ImageInputStream が、逆シークを可能にするためにデータ自体をキャッシュに格納し、キャッシュが一時ファイルに保持される場合は true を返します。 |
boolean |
isCachedMemory()
この
ImageInputStream が、逆シークを有効にするためにデータ自体をキャッシュに格納し、キャッシュがメインメモリーに保持される場合は true を返します。 |
long |
length()
既知の場合、ストリームの全長を返します。
|
void |
mark()
その後の
reset 呼び出しで返されるストリーム内の位置をマーク付けします。 |
int |
read()
ストリームから 1 バイトを読み込み、それを 0 から 255 までの整数として返します。
|
int |
read(byte[] b)
ストリームから最大
b.length バイトを読み込み、b にインデックス 0 から格納します。 |
int |
read(byte[] b, int off, int len)
ストリームから最大
len バイトを読み込み、b にインデックス off から格納します。 |
int |
readBit()
ストリームから 1 ビットを読み込み、それを値
0 または 1 の int として返します。 |
long |
readBits(int numBits)
ストリームからビット列を読み込み、
long として返します。読み込んだ最初のビットが出力の最上位ビットになります。 |
boolean |
readBoolean()
ストリームから 1 バイトを読み込み、0 でない場合は
true の boolean 値を返し、0 の場合は false を返します。 |
byte |
readByte()
ストリームから 1 バイトを読み込み、それを
byte 値として返します。 |
void |
readBytes(IIOByteBuffer buf, int len)
ストリームから
len バイトまでを読み込み、指定された IIOByteBuffer を変更してデータを検出可能なバイト配列、オフセット、および長さを示します。 |
char |
readChar()
readUnsignedShort と同等、ただし結果は char データ型を使用して返されます。 |
double |
readDouble()
ストリームから 8 バイトを読み込み、現在のバイト順に従って概念上それらを連結して、結果を
double 値として返します。 |
float |
readFloat()
ストリームから 4 バイトを読み込み、現在のバイト順に従って概念上それらを連結して、結果を
float 値として返します。 |
void |
readFully(byte[] b)
ストリームから
b.length バイトを読み込み、b にインデックス 0 から格納します。 |
void |
readFully(byte[] b, int off, int len)
ストリームから
len バイトを読み込み、b にインデックス off から格納します。 |
void |
readFully(char[] c, int off, int len)
ストリームから現在のバイト順に従って
len バイトの char (符号なし 16 ビット整数) 値を読み込み、それらを c にインデックス off から格納します。 |
void |
readFully(double[] d, int off, int len)
ストリームから現在のバイト順に従って
len バイトの double (64 ビット IEEE 倍精度浮動小数点数) 値を読み込み、それらを d にインデックス off から格納します。 |
void |
readFully(float[] f, int off, int len)
ストリームから現在のバイト順に従って
len バイトの float (32 ビット IEEE 単精度浮動小数点数) 値を読み込み、それらを f にインデックス off から格納します。 |
void |
readFully(int[] i, int off, int len)
ストリームから現在のバイト順に従って
len バイトの int (符号付き 32 ビット整数) 値を読み込み、それらを i にインデックス off から格納します。 |
void |
readFully(long[] l, int off, int len)
ストリームから現在のバイト順に従って
len バイトの long (符号付き 64 ビット整数) 値を読み込み、それらを l にインデックス off から格納します。 |
void |
readFully(short[] s, int off, int len)
ストリームから現在のバイト順に従って
len バイトの short (符号付き 16 ビット整数) 値を読み込み、それらを s にインデックス off から格納します。 |
int |
readInt()
ストリームから 4 バイトを読み込み、現在のバイト順に従って概念上それらを連結して、結果を
int 値として返します。 |
String |
readLine()
入力ストリームから、次の行のテキストを読み込みます。
|
long |
readLong()
ストリームから 8 バイトを読み込み、現在のバイト順に従って概念上それらを連結して、結果を
long 値として返します。 |
short |
readShort()
ストリームから 2 バイトを読み込み、現在のバイト順に従って概念上それらを連結して、結果を
short 値として返します。 |
int |
readUnsignedByte()
ストリームからバイトを読み込んで、概念上、整数に変換し、符号拡張ビットを取り除くためにそれを
0xff でマスクして、byte 値として返します。 |
long |
readUnsignedInt()
ストリームから 4 バイトを読み込んで現在のバイト順に従って概念上それらを連結し、結果の値を long に変換して、符号拡張ビットを取り除くために
0xffffffffL でマスクします。その結果を符号なし long 値として返します。 |
int |
readUnsignedShort()
ストリームから 2 バイトを読み込んで、現在のバイト順に従って概念上それらを連結し、結果として得られる値を
int に変換して、符号拡張ビットを取り除くために 0xffff でマスクします。その結果を符号なし int 値として返します。 |
String |
readUTF()
修正 UTF-8 形式でエンコードされた文字列を読み込みます。
|
void |
reset()
最新の不一致の
mark 呼び出し時点の、ビットオフセットを含む以前の位置を指すストリームポインタを返します。 |
void |
seek(long pos)
現在のストリーム位置を目的の位置に設定します。
|
void |
setBitOffset(int bitOffset)
ビットオフセットに 0 から 7 までの整数を設定します。
|
void |
setByteOrder(ByteOrder byteOrder)
このストリームからの今後のデータ値の読み込みのために、バイト順を設定します。
|
int |
skipBytes(int n)
指定されたバイト数だけストリーム位置を前に移動します。
|
long |
skipBytes(long n)
指定されたバイト数だけストリーム位置を前に移動します。
|
void setByteOrder(ByteOrder byteOrder)
列挙クラス java.nio.ByteOrder
を使用してバイト順を指定します。値 ByteOrder.BIG_ENDIAN
では、高位のバイトが先頭となる、いわゆるビッグエンディアン (ネットワークバイト順) が指定されます。Motorola と Sparc プロセッサはデータをこの形式で格納します。一方 Intel プロセッサは、データを逆順の ByteOrder.LITTLE_ENDIAN
で格納します。
バイト順は、readBits
メソッドから返される結果 (ImageOutputStream.writeBits
により書き込まれる値) には影響を与えません。
byteOrder
- ByteOrder.BIG_ENDIAN
または java.nio.ByteOrder.LITTLE_ENDIAN
のいずれか (今後の読み込みでネットワークバイト順またはその逆順のどちらを使用するかを示す)。ByteOrder
, getByteOrder()
, readBits(int)
ByteOrder getByteOrder()
java.nio.ByteOrder
列挙のインスタンスとして返します。ByteOrder.BIG_ENDIAN
または ByteOrder.LITTLE_ENDIAN
のいずれか (使用されるバイト順を示す)。ByteOrder
, setByteOrder(java.nio.ByteOrder)
int read() throws IOException
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
IOException
- 入出力エラーが発生した場合。int read(byte[] b) throws IOException
b.length
バイトを読み込み、b
にインデックス 0 から格納します。読み込んだバイト数を返します。ストリームの終わりに達したためにバイトを読み込めない場合は、-1 を返します。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
b
- 書き込まれるバイト配列。-1
。NullPointerException
- b
が null
の場合。IOException
- 入出力エラーが発生した場合。int read(byte[] b, int off, int len) throws IOException
len
バイトを読み込み、b
にインデックス off
から格納します。読み込んだバイト数を返します。ストリームの終わりに達したためにバイトを読み込めない場合は、-1
を返します。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
b
- 書き込まれるバイト配列。off
- 書き込み先の b
内の開始位置。len
- 読み込む最大 byte
数。-1
。NullPointerException
- b
が null
の場合。IndexOutOfBoundsException
- off
が負の値の場合、len
が負の値の場合、または off + len
が b.length
より大きい場合。IOException
- 入出力エラーが発生した場合。void readBytes(IIOByteBuffer buf, int len) throws IOException
len
バイトまでを読み込み、指定された IIOByteBuffer
を変更してデータを検出可能なバイト配列、オフセット、および長さを示します。呼び出し側で、IIOByteBuffer
で検出されたデータを変更してはいけません。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
buf
- 変更される IIOByteBuffer オブジェクト。len
- 読み込む最大 byte
数。IndexOutOfBoundsException
- len
が負の値の場合。NullPointerException
- buf
が null
の場合。IOException
- 入出力エラーが発生した場合。boolean readBoolean() throws IOException
true
の boolean
値を返し、0 の場合は false
を返します。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
readBoolean
、インタフェース: DataInput
EOFException
- ストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。byte readByte() throws IOException
byte
値として返します。0x00
から 0x7f
までのバイト値は 0
から 127
までの整数を表します。0x80
から 0xff
までの値は -128
から /1
までの負の値を表します。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
readByte
、インタフェース: DataInput
EOFException
- ストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。int readUnsignedByte() throws IOException
0xff
でマスクして、byte
値として返します。
したがって、0x00
から 0x7f
までのバイト値は 0
から 127
までの整数値として単純に返されます。通常は負の byte
値を表す 0x80
から 0xff
までの値は、128
から 255
までの正の整数に対応付けされます。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
readUnsignedByte
、インタフェース: DataInput
EOFException
- ストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。short readShort() throws IOException
short
値として返します。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
readShort
、インタフェース: DataInput
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。getByteOrder()
int readUnsignedShort() throws IOException
int
に変換して、符号拡張ビットを取り除くために 0xffff
でマスクします。その結果を符号なし int
値として返します。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
readUnsignedShort
、インタフェース: DataInput
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。getByteOrder()
char readChar() throws IOException
readUnsignedShort
と同等、ただし結果は char
データ型を使用して返されます。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
readChar
、インタフェース: DataInput
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。readUnsignedShort()
int readInt() throws IOException
int
値として返します。
ストリーム内のビットオフセットは無視され、0 として扱われます。
readInt
、インタフェース: DataInput
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。getByteOrder()
long readUnsignedInt() throws IOException
0xffffffffL
でマスクします。その結果を符号なし long
値として返します。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。getByteOrder()
long readLong() throws IOException
long
値として返します。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
readLong
、インタフェース: DataInput
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。getByteOrder()
float readFloat() throws IOException
float
値として返します。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
readFloat
、インタフェース: DataInput
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。getByteOrder()
double readDouble() throws IOException
double
値として返します。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
readDouble
、インタフェース: DataInput
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。getByteOrder()
String readLine() throws IOException
String
として返されます。このメソッドはバイトを処理するものなので、Unicode 文字セットの入力を完全にはサポートしません。
ファイルの終わりが検出されるまでに 1 バイトも読み込めなかった場合には、null
が返されます。それ以外の場合、読み込まれた各バイトはゼロ拡張によって char
型に変換されます。文字 '\n'
が検出されると、この文字は破棄され、読み込みは中止されます。文字 '\r'
が検出されると、この文字は破棄され、その次のバイトが文字 '\n'
に変換されますが、この文字も破棄されて、読み込みが中止されます。文字 '\n'
と文字 '\r'
のどちらかより前にファイルの終わりが検出されると、読み込みが中止されます。読み込みが中止されると、読み込まれて破棄されていないすべての文字を取り込んだ順番で格納している String
が返されます。この文字列のそれぞれの文字は \u0100
、つまり (char)256
より小さい値を持ちます。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
readLine
、インタフェース: DataInput
IOException
- 入出力エラーが発生した場合。String readUTF() throws IOException
readUTF
の汎用規約では、修正 UTF-8 形式でエンコードされた Unicode 文字列の表現を読み込みます。読み込まれた文字列は、String
として返されます。
まず、2 バイトを読み込み、それを使って readUnsignedShort
メソッドとまったく同じ方法で符号なし 16 ビット整数を作成します。この際、現在のバイト順の設定に関係なくネットワークバイト順を使用します。この整数値は UTF 長と呼ばれ、読み込まれる追加のバイト数を表します。次に、このバイトがグループ単位で文字に変換されます。各グループの長さは、グループの先頭バイトの値から計算されます。グループに後続のバイトがあれば、それは次のグループの先頭バイトです。
グループの先頭バイトがビットパターンの 0xxxxxxx
(ただし、x
は 0
または 1
を意味する) に一致する場合、グループはそのバイトだけで構成されます。バイトはゼロ拡張されて単一の文字を表現します。
グループの先頭バイトがビットパターン 110xxxxx
に一致する場合、そのグループはそのバイト a
と 2 番目のバイト b
から構成されます。バイト b
が存在しない場合 (バイト a
が読み込まれた最後のバイトだった場合) や、バイト b
がビットパターン 10xxxxxx
に一致しない場合には、UTFDataFormatException
がスローされます。そうでない場合、グループは次の文字に変換されます。
(char)(((a& 0x1F) << 6) | (b & 0x3F))
グループの先頭バイトがビットパターン 1110xxxx
に一致する場合、そのグループは先頭バイト a
に加えて、2 つのバイト b
と c
から構成されます。バイト c
が存在しない場合 (バイト a
が読み込まれた一連のバイトの最後の 2 つに入っていた場合) や、バイト b
または c
がビットパターン 10xxxxxx
に一致しない場合には、UTFDataFormatException
がスローされます。そうでない場合、グループは次の文字に変換されます。
(char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))
グループの先頭バイトがパターン 1111xxxx
かパターン 10xxxxxx
に一致する場合、UTFDataFormatException
がスローされます。
この処理全体のどこかでファイルの終わりが検出されると、EOFException
がスローされます。
各グループがこの処理で 1 文字に変換されると、対応するグループが入力ストリームから読み込まれたのと同じ順序で各文字が収集され、String
を表現します。そして、この String が返されます。
現在のバイト順の設定は無視されます。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
注: ここで使用される修正 UTF-8 は標準 UTF-8 と互換性がありません。このため、標準 UTF-8 を使用するイメージ形式の実装ではこのメソッドを使用しないでください。
readUTF
、インタフェース: DataInput
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合UTFDataFormatException
- 文字列中のバイトが、有効な修正 UTF-8 形式でエンコードされた文字列以外であった場合IOException
- 入出力エラーが発生した場合。void readFully(byte[] b, int off, int len) throws IOException
len
バイトを読み込み、b
にインデックス off
から格納します。ストリームの終わりに達すると、EOFException
がスローされます。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
readFully
、インタフェース: DataInput
b
- 書き込まれるバイト配列。off
- 書き込み先の b
内の開始位置。len
- 読み込む最大 byte
数。IndexOutOfBoundsException
- off
が負の値の場合、len
が負の値の場合、または off + len
が b.length
より大きい場合。NullPointerException
- b
が null
の場合。EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。void readFully(byte[] b) throws IOException
b.length
バイトを読み込み、b
にインデックス 0
から格納します。ストリームの終わりに達すると、EOFException
がスローされます。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
readFully
、インタフェース: DataInput
b
- byte
の配列。NullPointerException
- b
が null
の場合。EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。void readFully(short[] s, int off, int len) throws IOException
len
バイトの short (符号付き 16 ビット整数) 値を読み込み、それらを s
にインデックス off
から格納します。ストリームの終わりに達すると、EOFException
がスローされます。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
s
- 書き込まれる short 配列。off
- 書き込み先の b 内の開始位置。len
- 読み込む最大 short
数。IndexOutOfBoundsException
- off
が負の値の場合、len
が負の値の場合、または off + len
が s.length
より大きい場合。NullPointerException
- s
が null
の場合。EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。void readFully(char[] c, int off, int len) throws IOException
len
バイトの char (符号なし 16 ビット整数) 値を読み込み、それらを c
にインデックス off
から格納します。ストリームの終わりに達すると、EOFException
がスローされます。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
c
- 書き込まれる char 配列。off
- 書き込み先の b 内の開始位置。len
- 読み込む最大 char
数。IndexOutOfBoundsException
- off
が負の値の場合、len
が負の値の場合、または off + len
が c.length
より大きい場合。NullPointerException
- c
が null
の場合。EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。void readFully(int[] i, int off, int len) throws IOException
len
バイトの int (符号付き 32 ビット整数) 値を読み込み、それらを i
にインデックス off
から格納します。ストリームの終わりに達すると、EOFException
がスローされます。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
i
- 書き込まれる int 配列。off
- 書き込み先の b 内の開始位置。len
- 読み込む最大 int
数。IndexOutOfBoundsException
- off
が負の値の場合、len
が負の値の場合、または off + len
が i.length
より大きい場合。NullPointerException
- i
が null
の場合。EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。void readFully(long[] l, int off, int len) throws IOException
len
バイトの long (符号付き 64 ビット整数) 値を読み込み、それらを l
にインデックス off
から格納します。ストリームの終わりに達すると、EOFException
がスローされます。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
l
- 書き込まれる long 配列。off
- 書き込み先の b 内の開始位置。len
- 読み込む最大 long
数。IndexOutOfBoundsException
- off
が負の値の場合、len
が負の値の場合、または off + len
が l.length
より大きい場合。NullPointerException
- l
が null
の場合。EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。void readFully(float[] f, int off, int len) throws IOException
len
バイトの float (32 ビット IEEE 単精度浮動小数点数) 値を読み込み、それらを f
にインデックス off
から格納します。ストリームの終わりに達すると、EOFException
がスローされます。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
f
- 書き込まれる float 配列。off
- 書き込み先の b 内の開始位置。len
- 読み込む最大 float
数。IndexOutOfBoundsException
- off
が負の値の場合、len
が負の値の場合、または off + len
が f.length
より大きい場合。NullPointerException
- f
が null
の場合。EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。void readFully(double[] d, int off, int len) throws IOException
len
バイトの double (64 ビット IEEE 倍精度浮動小数点数) 値を読み込み、それらを d
にインデックス off
から格納します。ストリームの終わりに達すると、EOFException
がスローされます。
ストリーム内のビットオフセットは、読み込みを行う前に 0 にリセットされます。
d
- 書き込まれる double 配列。off
- 書き込み先の b 内の開始位置。len
- 読み込む最大 double
数。IndexOutOfBoundsException
- off
が負の値の場合、len
が負の値の場合、または off + len
が d.length
より大きい場合。NullPointerException
- d
が null
の場合。EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。long getStreamPosition() throws IOException
IOException
- 入出力エラーが発生した場合。int getBitOffset() throws IOException
readBits
メソッドの呼び出しで暗黙的に更新されます。値 0 は読み込まれるバイトの最上位ビット、値 7 は最下位ビットを示します。
ビットオフセットは、ストリームを最初に開くときに 0 に設定され、seek
、skipBytes
、または read
か readFully
メソッドのいずれかが呼び出されると 0 にリセットされます。
int
。IOException
- 入出力エラーが発生した場合。setBitOffset(int)
void setBitOffset(int bitOffset) throws IOException
getStreamPosition
から返される、ストリーム内のバイトオフセットは変更されません。値 0 は読み込まれるバイトの最上位ビット、値 7 は最下位ビットを示します。bitOffset
- 目的のオフセットで、0 から 7 までの int
。IllegalArgumentException
- bitOffset
が 0 から 7 の範囲内にない場合。IOException
- 入出力エラーが発生した場合。getBitOffset()
int readBit() throws IOException
0
または 1
の int
として返します。ビットオフセットは 1 ずつ増加し、8 を法として減分します。0
または 1
の int
。EOFException
- すべてのビットを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。long readBits(int numBits) throws IOException
long
として返します。読み込んだ最初のビットが出力の最上位ビットになります。読み込みは、getStreamPosition
で指定されるバイト内の getBitOffset
で指定されるビット位置から開始されます。ビットオフセットは numBits
だけ増加し、8 を法として減分します。
ストリームのバイト順はこのメソッドに影響しません。このメソッドの戻り値はビットが同時に読み込まれたかのように構築され、戻り値の右側にシフトされます。これを次の擬似コードで示します。
long accum = 0L; for (int i = 0; i < numBits; i++) { accum <<= 1; // Shift left one bit to make room accum |= readBit(); }したがって、逆ネットワークバイト順が使用されている場合 (つまり、
getByteOrder() == false
)、readBits(32)
の結果が readInt()
の結果と異なる場合があります。
すべてのビットを読み込む前にストリームの終わりを検出した場合、EOFException
がスローされます。
numBits
- 読み込むビット数を示す 0 から 64 までの int
。long
のビット列。IllegalArgumentException
- numBits
が 0 から 64 の範囲内にない場合。EOFException
- すべてのビットを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。long length() throws IOException
-1
が返されます。long
、そうでない場合は -1
。IOException
- 入出力エラーが発生した場合。int skipBytes(int n) throws IOException
skipBytes
、インタフェース: DataInput
n
- スキップするバイト数を含む int
。int
。IOException
- 入出力エラーが発生した場合。long skipBytes(long n) throws IOException
skipBytes(int)
と同じですが、さらに離れた位置までスキップできます。n
- スキップするバイト数を含む long
。long
。IOException
- 入出力エラーが発生した場合。void seek(long pos) throws IOException
pos
が getflushedPosition
から返されるフラッシュ位置よりも小さい場合は、IndexOutOfBoundsException
がスローされます。
シークでファイルの終わりを通過することは正常であり、EOFException
は読み込みの場合のみスローされます。
pos
- 目的のファイルポインタ位置を示す long
。IndexOutOfBoundsException
- pos
がフラッシュ位置よりも小さい場合。IOException
- その他の入出力エラーが発生した場合。void mark()
reset
呼び出しで返されるストリーム内の位置をマーク付けします。標準の InputStream
とは異なり、ImageInputStream
はすべてマーク付けをサポートします。さらに、mark
と reset
の呼び出しは、任意にネスト化することができます。
Reader
および InputStream
インタフェースで宣言される mark
メソッドとは異なり、readLimit
パラメータは使用されません。mark
の呼び出しに続いて任意のデータ量を読み込むことができます。
readBits
メソッドで使用されるビット位置は保存され、mark
と reset
をペアで呼び出すたびに復元されます。
ImageReader
は、読み込み操作の一部として flushBefore
を呼び出すことができることに留意してください。このため、アプリケーションがストリームを ImageReader
に渡す前に mark
を呼び出す場合、読み込み操作が完了したあともマーク位置が有効であると考えるべきではありません。
void reset() throws IOException
mark
呼び出し時点の、ビットオフセットを含む以前の位置を指すストリームポインタを返します。
対応する mark
を呼び出さずに reset
を呼び出す場合には影響ありません。
以前にマーク付けされた位置がストリームの破棄された部分である場合には IOException
がスローされます。
IOException
- 入出力エラーが発生した場合。void flushBefore(long pos) throws IOException
IndexOutOfBoundsException
がスローされます。
flushBefore
を呼び出すと、このインタフェースを実装するクラスが、ストリームからデータを格納するのに使用するメモリーやディスクスペースなどのリソースを解放できます。
pos
- フラッシュされるストリーム接頭辞の長さを示す long
。IndexOutOfBoundsException
- pos
がストリームのフラッシュ部分にあるか、または現在のストリーム位置を通過した場合。IOException
- 入出力エラーが発生した場合。void flush() throws IOException
flushBefore(getStreamPosition())
と同等です。IOException
- 入出力エラーが発生した場合。long getFlushedPosition()
flushBefore
呼び出しに渡されたすべての値の最大値になります。long
。boolean isCached()
ImageInputStream
がデータ自体をキャッシュに格納する場合は true
を返します。アプリケーションはキャッシュリソースを節約するために、これを参照してフラッシュの頻度、またはフラッシュするかどうかを決定できます。ImageInputStream
がデータをキャッシュに格納する場合は true
。isCachedMemory()
, isCachedFile()
boolean isCachedMemory()
ImageInputStream
が、逆シークを有効にするためにデータ自体をキャッシュに格納し、キャッシュがメインメモリーに保持される場合は true
を返します。アプリケーションはキャッシュリソースを節約するために、これを参照してフラッシュの頻度、またはフラッシュするかどうかを決定できます。ImageInputStream
がデータをメインメモリーにキャッシュする場合は true
。isCached()
, isCachedFile()
boolean isCachedFile()
ImageInputStream
が、逆シークを可能にするためにデータ自体をキャッシュに格納し、キャッシュが一時ファイルに保持される場合は true
を返します。アプリケーションはキャッシュリソースを節約するために、これを参照してフラッシュの頻度、またはフラッシュするかどうかを決定できます。ImageInputStream
がデータを一時ファイルにキャッシュする場合は true
。isCached()
, isCachedMemory()
void close() throws IOException
IOException
がスローされるか不正な動作が実行される場合があります。このメソッドを呼び出すと、このインタフェースを実装するクラスが、メモリー、ディスクスペース、またはファイル記述子などのストリームに関連するリソースを解放できます。close
、インタフェース: AutoCloseable
close
、インタフェース: Closeable
IOException
- 入出力エラーが発生した場合。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.