|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
public interface ImageInputStream
供 ImageReader
使用的可尋找輸入串流介面。各種輸入源(如 InputStream
、File
以及將來的快速 I/O 源)都可以通過此介面的恰當實作進行“包裹”,供 Image I/O API 使用。
ImageInputStreamImpl
,
FileImageInputStream
,
FileCacheImageInputStream
,
MemoryCacheImageInputStream
方法摘要 | |
---|---|
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()
從串流中讀取單個位元組,並以整數(0 到 255 之間)形式返回該位元組。 |
int |
read(byte[] b)
從串流中讀取至多 b.length 個位元組,並將其存儲到 b 中(從索引 0 開始)。 |
int |
read(byte[] b,
int off,
int len)
從串流中讀取至多 len 個位元組,並將其存儲到 b 中(從索引 off 開始)。 |
int |
readBit()
從串流中讀取單個位元組,並以 int (0 或 1 )的形式返回該位元組。 |
long |
readBits(int numBits)
從串流中讀取位串 (bitstring) 並以 long 的形式返回,使第一個讀取的位成為輸出的最高有效位。 |
boolean |
readBoolean()
從串流中讀取一個位元組,如果其不為 0,則返回 boolean 值 true ;如果為 0,則返回 false 。 |
byte |
readByte()
從串流中讀取一個位元組,並以 byte 值的形式返回該位元組。 |
void |
readBytes(IIOByteBuffer buf,
int len)
從串流中讀取至多 len 個位元組,並修改提供的 IIOByteBuffer 以指示可以找到資料的 byte 陣列、偏移量和長度。 |
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()
從串流中讀取兩個位元組,根據當前位元組順序將其連接(概念上),然後以 short 值的形式返回結果。 |
int |
readUnsignedByte()
從串流中讀取一個位元組,將其轉換為 int(概念上),使用 0xff 屏蔽以便去掉所有符號擴展位,然後以 byte 值的形式返回。 |
long |
readUnsignedInt()
從串流中讀取 4 個位元組,根據當前位元組順序將其連接(概念上),將得到的值轉換為 long,使用 0xffffffffL 屏蔽以便去掉所有符號擴展位,然後以無符號 long 值的形式返回結果。 |
int |
readUnsignedShort()
從串流中讀取兩個位元組,根據當前位元組順序將其連接(概念上),將得到的值轉換為 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
指定所謂的 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
- 如果發生 I/O 錯誤。int read(byte[] b) throws IOException
b.length
個位元組,並將其存儲到 b
中(從索引 0 開始)。返回讀取的位元組數。如果因到達串流末尾而無法讀取任何位元組,則返回 -1。
在進行讀取前,串流中的位偏移量被重置為 0。
b
- 用來接收寫入的 byte 陣列。
-1
,指示 EOF。
NullPointerException
- 如果 b
為 null
。
IOException
- 如果發生 I/O 錯誤。int read(byte[] b, int off, int len) throws IOException
len
個位元組,並將其存儲到 b
中(從索引 off
開始)。返回讀取的位元組數。如果因到達串流末尾而無法讀取任何位元組,則返回 -1
。
在進行讀取前,串流中的位偏移量被重置為 0。
b
- 用來接收寫入的 byte 陣列。off
- 向 b
進行寫入的開始位置。len
- 要讀取的最大 byte
數。
-1
,指示 EOF。
NullPointerException
- 如果 b
為 null
。
IndexOutOfBoundsException
- 如果 off
為負、len
為負或者 off + len
大於 b.length
。
IOException
- 如果發生 I/O 錯誤。void readBytes(IIOByteBuffer buf, int len) throws IOException
len
個位元組,並修改提供的 IIOByteBuffer
以指示可以找到資料的 byte 陣列、偏移量和長度。調用者不應該試圖修改 IIOByteBuffer
中找到的資料。
在進行讀取前,串流中的位偏移量被重置為 0。
buf
- 要修改的 IIOByteBuffer 物件。len
- 要讀取的最大 byte
數。
IndexOutOfBoundsException
- 如果 len
為負。
NullPointerException
- 如果 buf
為 null
。
IOException
- 如果發生 I/O 錯誤。boolean readBoolean() throws IOException
boolean
值 true
;如果為 0,則返回 false
。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readBoolean
EOFException
- 如果到達串流末尾。
IOException
- 如果發生 I/O 錯誤。byte readByte() throws IOException
byte
值的形式返回該位元組。0x00
到 0x7f
之間的位元組值表示 0
到 127
之間的整數值。0x80
到 0xff
之間的位元組值表示 -128
到 -1
之間的負整數值。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readByte
EOFException
- 如果到達串流末尾。
IOException
- 如果發生 I/O 錯誤。int readUnsignedByte() throws IOException
0xff
屏蔽以便去掉所有符號擴展位,然後以 byte
值的形式返回。
於是,0x00
到 0x7f
之間的位元組值便作為 0
到 127
之間的整數值返回。0x80
到 0xff
之間的位元組值通常表示為負的 byte
值,它們將被映射成 128
到 255
之間的正整數。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readUnsignedByte
EOFException
- 如果到達串流末尾。
IOException
- 如果發生 I/O 錯誤。short readShort() throws IOException
short
值的形式返回結果。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readShort
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。getByteOrder()
int readUnsignedShort() throws IOException
int
,使用 0xffff
屏蔽以便去掉所有符號擴展位,然後以無符號 int
值的形式返回結果。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readUnsignedShort
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。getByteOrder()
char readChar() throws IOException
readUnsignedShort
等效,唯一的不同在於它的結果使用 char
資料型別返回。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readChar
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。readUnsignedShort()
int readInt() throws IOException
int
值的形式返回結果。
忽略串流中的位偏移量,將其視為 0。
DataInput
中的 readInt
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。getByteOrder()
long readUnsignedInt() throws IOException
0xffffffffL
屏蔽以便去掉所有符號擴展位,然後以無符號 long
值的形式返回結果。
在進行讀取前,串流中的位偏移量被重置為 0。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。getByteOrder()
long readLong() throws IOException
long
值的形式返回結果。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readLong
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。getByteOrder()
float readFloat() throws IOException
float
值的形式返回結果。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readFloat
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。getByteOrder()
double readDouble() throws IOException
double
值的形式返回結果。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readDouble
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。getByteOrder()
String readLine() throws IOException
String
形式返回讀取的字元。注意,因為此方法處理字元,所以它不支持整個 Unicode 字元集的輸入。
如果在一個位元組都沒有讀取的時候就遇到檔案結束標記,則返回 null
。否則,通過左側補 0 將讀取的每個位元組轉換成 char
型別的值。如果遇到字元 '\n'
,則丟棄它並且停止讀取。如果遇到字元 '\r'
,則丟棄它;如果它後面的那個位元組轉變成字元 '\n'
,則同樣丟棄它,並且停止讀取。如果在遇到字元 '\n'
和 '\r'
之一前遇到檔案結束標記,則停止讀取。一旦已停止讀取,則返回一個 String
,它按順序包含所有已讀取且未丟棄的字元。注意,此字元串中的每個字元的值都將小於 \u0100
(即 (char)256
)的值。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readLine
IOException
- 如果發生 I/O 錯誤。String readUTF() throws IOException
readUTF
的常規協定是:該方法讀取使用 UTF-8 修改版格式編碼的 Unicode 字元串的表示形式;然後以 String
的形式返回此字元串。
首先,讀取兩個位元組並按 readUnsignedShort
方法的方式使用這兩個位元組建構一個無符號 16 位整數,使用的是網路位元組順序(無論當前設置的是哪種位元組順序)。該整數值被稱為 UTF 長度,它指定要讀取的額外位元組數。然後成組地將這些位元組轉換為字元。每組的長度根據該組第一個位元組的值計算。緊跟在某個組後面的位元組(如果有)是下一組的第一個位元組。
如果組的第一個位元組與位網要 0xxxxxxx
(其中 x
表示“可能為 0
或 1
”)比對,則該組只有這一個位元組。該位元組被左側補 0,轉換成一個字元。
如果組的第一個位元組與位網要 110xxxxx
比對,則該組只由位元組 a
和另一個位元組 b
組成。如果沒有位元組 b
(因為位元組 a
是要讀取的最後一個位元組),或者位元組 b
與位網要 10xxxxxx
不比對,則拋出 UTFDataFormatException
。否則,將該組轉換成字元:
(char)(((a& 0x1F) << 6) | (b & 0x3F))
如果組的第一個位元組與位網要 1110xxxx
比對,則該組由位元組 a
和另外兩個位元組 b
和 c
組成。如果沒有位元組 c
(因為位元組 a
是要讀取的最後兩個位元組之一),或者位元組 b
或位元組 c
與位網要 10xxxxxx
不比對,則拋出 UTFDataFormatException
。否則,將該組轉換成字元:
(char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))
如果組的第一個位元組與網要 1111xxxx
或網要 10xxxxxx
比對,則拋出 UTFDataFormatException
。
如果在整個執行過程中的任意時間遇到檔案結束標記,則拋出 EOFException
。
在通過此過程將每個組轉換成字元後,按照從輸入串流中讀取相應組的順序,將這些字元收集在一起,形成一個 String
,然後該字元串將被返回。
忽略當前設置的位元組順序。
在進行讀取前,串流中的位偏移量被重置為 0。
註:在使用標準 UTF-8 圖像格式的實作中不應該使用此方法,因為此處使用的 UTF-8 修改版與標準 UTF-8 不相容。
DataInput
中的 readUTF
EOFException
- 如果此串流在讀取所有位元組之前到達末尾。
UTFDataFormatException
- 如果這些位元組不表示一個有效的、UTF-8 修改版編碼的字元串。
IOException
- 如果發生 I/O 錯誤。void readFully(byte[] b, int off, int len) throws IOException
len
個位元組,並將其存儲到 b
中(從索引 off
開始)。如果到達串流末尾,則將拋出 EOFException
。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readFully
b
- 用來接收寫入的 byte 陣列。off
- 向 b
進行寫入的開始位置。len
- 要讀取的最大 byte
數。
IndexOutOfBoundsException
- 如果 off
為負、len
為負或者 off + len
大於 b.length
。
NullPointerException
- 如果 b
為 null
。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。void readFully(byte[] b) throws IOException
b.length
個位元組,並將其存儲到 b
中(從索引 0
開始)。如果到達串流末尾,則將拋出 EOFException
。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readFully
b
- 一個 byte
陣列。
NullPointerException
- 如果 b
為 null
。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。void readFully(short[] s, int off, int len) throws IOException
len
個 short(有符號 16 位整數),並將其存儲到 s
中(從索引 off
開始)。如果到達串流末尾,則將拋出 EOFException
。
在進行讀取前,串流中的位偏移量被重置為 0。
s
- 用來接收寫入的 short 陣列。off
- 向 s 進行寫入的開始位置。len
- 要讀取的最大 short
數。
IndexOutOfBoundsException
- 如果 off
為負、len
為負或者 off + len
大於 s.length
。
NullPointerException
- 如果 s
為 null
。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。void readFully(char[] c, int off, int len) throws IOException
len
個 char(無符號 16 位整數),並將其存儲到 c
中(從索引 off
開始)。如果到達串流末尾,則將拋出 EOFException
。
在進行讀取前,串流中的位偏移量被重置為 0。
c
- 用來接收寫入的 char 陣列。off
- 向 c 進行寫入的開始位置。len
- 要讀取的最大 char
數。
IndexOutOfBoundsException
- 如果 off
為負、len
為負或者 off + len
大於 c.length
。
NullPointerException
- 如果 c
為 null
。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。void readFully(int[] i, int off, int len) throws IOException
len
個 int(有符號 32 位整數),並將其存儲到 i
中(從索引 off
開始)。如果到達串流末尾,則將拋出 EOFException
。
在進行讀取前,串流中的位偏移量被重置為 0。
i
- 用來接收寫入的 int 陣列。off
- 向 i 進行寫入的開始位置。len
- 要讀取的最大 int
數。
IndexOutOfBoundsException
- 如果 off
為負、len
為負或者 off + len
大於 i.length
。
NullPointerException
- 如果 i
為 null
。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。void readFully(long[] l, int off, int len) throws IOException
len
個 long(有符號 64 位整數),並將其存儲到 l
中(從索引 off
開始)。如果到達串流末尾,則將拋出 EOFException
。
在進行讀取前,串流中的位偏移量被重置為 0。
l
- 用來接收寫入的 long 陣列。off
- 向 l 進行寫入的開始位置。len
- 要讀取的最大 long
數。
IndexOutOfBoundsException
- 如果 off
為負、len
為負或者 off + len
大於 l.length
。
NullPointerException
- 如果 l
為 null
。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。void readFully(float[] f, int off, int len) throws IOException
len
個 float(32 位 IEEE 單精度浮點值),並將其存儲到 f
中(從索引 off
開始)。如果到達串流末尾,則將拋出 EOFException
。
在進行讀取前,串流中的位偏移量被重置為 0。
f
- 用來接收寫入的 float 陣列。off
- 向 f 進行寫入的開始位置。len
- 要讀取的最大 float
數。
IndexOutOfBoundsException
- 如果 off
為負、len
為負或者 off + len
大於 f.length
。
NullPointerException
- 如果 f
為 null
。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。void readFully(double[] d, int off, int len) throws IOException
len
個 double(64 位 IEEE 雙精度浮點值),並將其存儲到 d
中(從索引 off
開始)。如果到達串流末尾,則將拋出 EOFException
。
在進行讀取前,串流中的位偏移量被重置為 0。
d
- 用來接收寫入的 double 陣列。off
- 向 d 進行寫入的開始位置。len
- 要讀取的最大 double
數。
IndexOutOfBoundsException
- 如果 off
為負、len
為負或者 off + len
大於 d.length
。
NullPointerException
- 如果 d
為 null
。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。long getStreamPosition() throws IOException
IOException
- 如果發生 I/O 錯誤。int getBitOffset() throws IOException
readBits
方法隱式地更新。值 0 表示所讀取位元組的最高有效位,值 7 表示所讀取位元組的最低有效位。
第一次打開串流時位偏移量被設置為 0,以後可以通過調用 seek
、skipBytes
、或者任何 read
或 readFully
方法將其重置為 0。
int
,包含 0 到 7 之間(包含兩者)的位偏移量。
IOException
- 如果發生 I/O 錯誤。setBitOffset(int)
void setBitOffset(int bitOffset) throws IOException
getStreamPosition
返回的位偏移量。值 0 表示所讀取位元組的最高有效位,值 7 表示所讀取位元組的最低有效位。
bitOffset
- 所需的偏移量,為 0 到 7 之間(包括兩者)的 int
的形式。
IllegalArgumentException
- 如果 bitOffset
不在 0 和 7(包括兩者)之間。
IOException
- 如果發生 I/O 錯誤。getBitOffset()
int readBit() throws IOException
int
(0
或 1
)的形式返回該位元組。位偏移量將加 1,模數將減 8。
int
,包含 0
或 1
。
EOFException
- 如果該串流在讀取所有位之前到達末尾。
IOException
- 如果發生 I/O 錯誤。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
- 如果發生 I/O 錯誤。long length() throws IOException
-1
。
long
,包含串流的長度(如果已知);否則返回 -1
。
IOException
- 如果發生 I/O 錯誤。int skipBytes(int n) throws IOException
DataInput
中的 skipBytes
n
- 一個 int
,它包含要跳過的位元組數。
int
,表示跳過的位元組數。
IOException
- 如果發生 I/O 錯誤。long skipBytes(long n) throws IOException
skipBytes(int)
,唯一的不同在於它允許更大的跳躍距離。
n
- 一個 long
,它包含要跳過的位元組數。
long
。
IOException
- 如果發生 I/O 錯誤。void seek(long pos) throws IOException
如果 pos
小於刷新位置(由 getflushedPosition
返回),那麼將拋出 IndexOutOfBoundsException
。
尋找檔案結束標記的後面是合法的,只有在該處執行讀取時才拋出 EOFException
。
pos
- 一個 long
,它包含所需的檔案指針位置。
IndexOutOfBoundsException
- 如果 pos
小於刷新位置。
IOException
- 如果發生任何 I/O 錯誤。void mark()
reset
時返回。與標準 InputStream
不同的是,所有的 ImageInputStream
都支持標記操作。此外,還可以隨意巢狀對 mark
和 reset
的調用。
與 Reader
和 InputStream
介面宣告的 mark
方法不同,此方法不使用任何 readLimit
參數。調用 mark
後可以讀取任意數量的資料。
readBits
方法使用的位位置可通過每次調用 mark
和 reset
來保存和恢復。
注意,ImageReader
調用 flushBefore
作為讀取操作的一部分是有效的。因此,如果應用程序向 ImageReader
傳遞該串流前調用 mark
,則應用程序不應該假定標記位置在讀取操作完成後仍保持有效。
void reset() throws IOException
mark
時指向上一個位置(包括位偏移量)的串流指針。
調用 reset
而沒有相應地調用 mark
沒有任何效果。
如果上一個標記位置位於串流的丟棄部分,則拋出 IOException
。
IOException
- 如果發生 I/O 錯誤。void flushBefore(long pos) throws IOException
IndexOutOfBoundsException
。
調用 flushBefore
可允許實作此介面的類別釋放存儲串流中的資料所使用的資源,如記憶體和磁碟空間。
pos
- 一個 long
,它包含要刷新的串流前綴的長度。
IndexOutOfBoundsException
- 如果 pos
位於串流的刷新部分或當前串流位置的後面。
IOException
- 如果發生 I/O 錯誤。void flush() throws IOException
flushBefore(getStreamPosition())
。
IOException
- 如果發生 I/O 錯誤。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
或錯誤行為。調用此方法可允許實作此介面的類別釋放與串流關聯的資源,如記憶體、磁碟空間或檔案描述符。
IOException
- 如果發生 I/O 錯誤。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。