|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.imageio.stream.ImageInputStreamImpl
public abstract class ImageInputStreamImpl
實作 ImageInputStream
介面的抽象類別。此類別設計用於減少必須由子類別實作的方法數。
需要特別指出的是,此類別處理大部分或全部關於位元組順序解釋、緩衝、標記/重置、丟棄、關閉和釋放的詳細資料。
欄位摘要 | |
---|---|
protected int |
bitOffset
串流中的當前位偏移量。 |
protected ByteOrder |
byteOrder
串流的位元組順序,其為列舉類別 java.nio.ByteOrder 的實例,其中 ByteOrder.BIG_ENDIAN 指示網路位元組順序,ByteOrder.LITTLE_ENDIAN 指示反向順序。 |
protected long |
flushedPos
可能丟棄的資料前面的那個位置。 |
protected long |
streamPos
串流中的當前讀取位置。 |
建構子摘要 | |
---|---|
ImageInputStreamImpl()
建構一個 ImageInputStreamImpl 。 |
方法摘要 | |
---|---|
protected void |
checkClosed()
如果已經關閉串流,則拋出 IOException 。 |
void |
close()
關閉串流。 |
protected void |
finalize()
在垃圾回收前結束此物件。 |
void |
flush()
丟棄當前串流位置之前的串流初始部分。 |
void |
flushBefore(long pos)
丟棄所指示位置之前的串流初始部分。 |
int |
getBitOffset()
以整數的形式返回當前位偏移量,該整數在 0 到 7 之間(包含兩者)。 |
ByteOrder |
getByteOrder()
以 java.nio.ByteOrder 列舉實例的形式返回從此串流中讀取資料值時所使用的位元組順序。 |
long |
getFlushedPosition()
返回串流中可以執行尋找的最早位置。 |
long |
getStreamPosition()
返回串流的當前位元組位置。 |
boolean |
isCached()
預設實作返回 false。 |
boolean |
isCachedFile()
預設實作返回 false。 |
boolean |
isCachedMemory()
預設實作返回 false。 |
long |
length()
返回 -1L ,指示串流的長度未知。 |
void |
mark()
將當前串流位置推進到標記位置的堆疊(stack)空間上。 |
abstract int |
read()
從串流中讀取單個位元組,並以 int (0 到 255 之間)形式返回該位元組。 |
int |
read(byte[] b)
調用 read(b, 0, b.length) 的便捷方法。 |
abstract 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()
根據標記的堆疊(stack)空間重置當前串流位元組和位位置。 |
void |
seek(long pos)
將當前串流位置設置為所需的位置。 |
void |
setBitOffset(int bitOffset)
將位偏移量設置為 0 到 7 之間(包含兩者)的整數。 |
void |
setByteOrder(ByteOrder byteOrder)
設置希望以後從此串流中讀取資料值時使用的位元組順序。 |
int |
skipBytes(int n)
通過調用 seek(getStreamPosition() + n) 推進當前串流位置。 |
long |
skipBytes(long n)
通過調用 seek(getStreamPosition() + n) 推進當前串流位置。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
欄位詳細資訊 |
---|
protected ByteOrder byteOrder
java.nio.ByteOrder
的實例,其中 ByteOrder.BIG_ENDIAN
指示網路位元組順序,ByteOrder.LITTLE_ENDIAN
指示反向順序。預設情況下,該值為 ByteOrder.BIG_ENDIAN
。
protected long streamPos
protected int bitOffset
protected long flushedPos
flushedPos
將總是 >= 0。
建構子詳細資訊 |
---|
public ImageInputStreamImpl()
ImageInputStreamImpl
。
方法詳細資訊 |
---|
protected final void checkClosed() throws IOException
IOException
。子類別可以從其任何要求不關閉串流的方法中調用此方法。
IOException
- 如果已關閉串流。public void setByteOrder(ByteOrder byteOrder)
ImageInputStream
複製的描述 列舉類別 java.nio.ByteOrder
用於指定位元組順序。值 ByteOrder.BIG_ENDIAN
指定所謂的 big-endian 或網路位元組順序,該順序中高位位元組在前。Motorola 和 Sparc 處理器用此格式存儲資料,而 Intel 處理器使用與之相反的 ByteOrder.LITTLE_ENDIAN
順序存儲資料。
位元組順序對 readBits
方法返回的結果(或 ImageOutputStream.writeBits
寫入的值)沒有任何影響。
ImageInputStream
中的 setByteOrder
byteOrder
- ByteOrder.BIG_ENDIAN
或 java.nio.ByteOrder.LITTLE_ENDIAN
,指示以後讀取時是使用網路順序還是使用與之相反的順序。ByteOrder
,
ImageInputStream.getByteOrder()
,
ImageInputStream.readBits(int)
public ByteOrder getByteOrder()
ImageInputStream
複製的描述java.nio.ByteOrder
列舉實例的形式返回從此串流中讀取資料值時所使用的位元組順序。
ImageInputStream
中的 getByteOrder
ByteOrder.BIG_ENDIAN
或 ByteOrder.LITTLE_ENDIAN
,指示要使用的位元組順序。ByteOrder
,
ImageInputStream.setByteOrder(java.nio.ByteOrder)
public abstract int read() throws IOException
int
(0 到 255 之間)形式返回該位元組。 如果到達 EOF,則返回 -1
。
子類別必須提供此方法的實作。子類別實作在退出前應該更新串流位置。
在發生讀取前,串流中的位偏移量必須被重置為 0。
ImageInputStream
中的 read
-1
。
IOException
- 如果串流已經被關閉。public int read(byte[] b) throws IOException
read(b, 0, b.length)
的便捷方法。
在發生讀取前,串流中的位偏移量被重置為 0。
ImageInputStream
中的 read
b
- 用來接收寫入的 byte 陣列。
-1
,指示 EOF。
NullPointerException
- 如果 b
為 null
。
IOException
- 如果發生 I/O 錯誤。public abstract int read(byte[] b, int off, int len) throws IOException
len
個位元組,並將其存儲到 b
中(從 off
索引處開始)。如果由於到達串流末尾而沒有讀取任何位元組,則返回 -1
。
在發生讀取前,串流中的位偏移量必須被重置為 0。
子類別必須提供此方法的實作。子類別實作在退出前應該更新串流位置。
ImageInputStream
中的 read
b
- 用來接收寫入的位元組陣列。off
- b
中要寫入的起始位置。len
- 要讀取的最大位元組數。
-1
,指示 EOF。
IndexOutOfBoundsException
- 如果 off
為負、len
為負或者 off + len
大於 b.length
。
NullPointerException
- 如果 b
為 null
。
IOException
- 如果發生 I/O 錯誤。public void readBytes(IIOByteBuffer buf, int len) throws IOException
ImageInputStream
複製的描述len
個位元組,並修改提供的 IIOByteBuffer
以指示可以找到資料的 byte 陣列、偏移量和長度。調用者不應該試圖修改 IIOByteBuffer
中找到的資料。
在進行讀取前,串流中的位偏移量被重置為 0。
ImageInputStream
中的 readBytes
buf
- 要修改的 IIOByteBuffer 物件。len
- 要讀取的最大 byte
數。
IOException
- 如果發生 I/O 錯誤。public boolean readBoolean() throws IOException
ImageInputStream
複製的描述boolean
值 true
;如果為 0,則返回 false
。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readBoolean
ImageInputStream
中的 readBoolean
EOFException
- 如果到達串流末尾。
IOException
- 如果發生 I/O 錯誤。public byte readByte() throws IOException
ImageInputStream
複製的描述byte
值的形式返回該位元組。0x00
到 0x7f
之間的位元組值表示 0
到 127
之間的整數值。0x80
到 0xff
之間的位元組值表示 -128
到 -1
之間的負整數值。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readByte
ImageInputStream
中的 readByte
EOFException
- 如果到達串流末尾。
IOException
- 如果發生 I/O 錯誤。public int readUnsignedByte() throws IOException
ImageInputStream
複製的描述0xff
屏蔽以便去掉所有符號擴展位,然後以 byte
值的形式返回。
於是,0x00
到 0x7f
之間的位元組值便作為 0
到 127
之間的整數值返回。0x80
到 0xff
之間的位元組值通常表示為負的 byte
值,它們將被映射成 128
到 255
之間的正整數。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readUnsignedByte
ImageInputStream
中的 readUnsignedByte
EOFException
- 如果到達串流末尾。
IOException
- 如果發生 I/O 錯誤。public short readShort() throws IOException
ImageInputStream
複製的描述short
值的形式返回結果。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readShort
ImageInputStream
中的 readShort
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。ImageInputStream.getByteOrder()
public int readUnsignedShort() throws IOException
ImageInputStream
複製的描述int
,使用 0xffff
屏蔽以便去掉所有符號擴展位,然後以無符號 int
值的形式返回結果。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readUnsignedShort
ImageInputStream
中的 readUnsignedShort
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。ImageInputStream.getByteOrder()
public char readChar() throws IOException
ImageInputStream
複製的描述readUnsignedShort
等效,唯一的不同在於它的結果使用 char
資料型別返回。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readChar
ImageInputStream
中的 readChar
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。ImageInputStream.readUnsignedShort()
public int readInt() throws IOException
ImageInputStream
複製的描述int
值的形式返回結果。
忽略串流中的位偏移量,將其視為 0。
DataInput
中的 readInt
ImageInputStream
中的 readInt
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。ImageInputStream.getByteOrder()
public long readUnsignedInt() throws IOException
ImageInputStream
複製的描述0xffffffffL
屏蔽以便去掉所有符號擴展位,然後以無符號 long
值的形式返回結果。
在進行讀取前,串流中的位偏移量被重置為 0。
ImageInputStream
中的 readUnsignedInt
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。ImageInputStream.getByteOrder()
public long readLong() throws IOException
ImageInputStream
複製的描述long
值的形式返回結果。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readLong
ImageInputStream
中的 readLong
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。ImageInputStream.getByteOrder()
public float readFloat() throws IOException
ImageInputStream
複製的描述float
值的形式返回結果。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readFloat
ImageInputStream
中的 readFloat
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。ImageInputStream.getByteOrder()
public double readDouble() throws IOException
ImageInputStream
複製的描述double
值的形式返回結果。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readDouble
ImageInputStream
中的 readDouble
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。ImageInputStream.getByteOrder()
public String readLine() throws IOException
ImageInputStream
複製的描述String
形式返回讀取的字元。注意,因為此方法處理字元,所以它不支持整個 Unicode 字元集的輸入。
如果在一個位元組都沒有讀取的時候就遇到檔案結束標記,則返回 null
。否則,通過左側補 0 將讀取的每個位元組轉換成 char
型別的值。如果遇到字元 '\n'
,則丟棄它並且停止讀取。如果遇到字元 '\r'
,則丟棄它;如果它後面的那個位元組轉變成字元 '\n'
,則同樣丟棄它,並且停止讀取。如果在遇到字元 '\n'
和 '\r'
之一前遇到檔案結束標記,則停止讀取。一旦已停止讀取,則返回一個 String
,它按順序包含所有已讀取且未丟棄的字元。注意,此字元串中的每個字元的值都將小於 \u0100
(即 (char)256
)的值。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readLine
ImageInputStream
中的 readLine
IOException
- 如果發生 I/O 錯誤。public String readUTF() throws IOException
ImageInputStream
複製的描述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
ImageInputStream
中的 readUTF
EOFException
- 如果此串流在讀取所有位元組之前到達末尾。
UTFDataFormatException
- 如果這些位元組不表示一個有效的、UTF-8 修改版編碼的字元串。
IOException
- 如果發生 I/O 錯誤。public void readFully(byte[] b, int off, int len) throws IOException
ImageInputStream
複製的描述len
個位元組,並將其存儲到 b
中(從索引 off
開始)。如果到達串流末尾,則將拋出 EOFException
。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readFully
ImageInputStream
中的 readFully
b
- 用來接收寫入的 byte 陣列。off
- 向 b
進行寫入的開始位置。len
- 要讀取的最大 byte
數。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。public void readFully(byte[] b) throws IOException
ImageInputStream
複製的描述b.length
個位元組,並將其存儲到 b
中(從索引 0
開始)。如果到達串流末尾,則將拋出 EOFException
。
在進行讀取前,串流中的位偏移量被重置為 0。
DataInput
中的 readFully
ImageInputStream
中的 readFully
b
- 一個 byte
陣列。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。public void readFully(short[] s, int off, int len) throws IOException
ImageInputStream
複製的描述len
個 short(有符號 16 位整數),並將其存儲到 s
中(從索引 off
開始)。如果到達串流末尾,則將拋出 EOFException
。
在進行讀取前,串流中的位偏移量被重置為 0。
ImageInputStream
中的 readFully
s
- 用來接收寫入的 short 陣列。off
- 向 s 進行寫入的開始位置。len
- 要讀取的最大 short
數。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。public void readFully(char[] c, int off, int len) throws IOException
ImageInputStream
複製的描述len
個 char(無符號 16 位整數),並將其存儲到 c
中(從索引 off
開始)。如果到達串流末尾,則將拋出 EOFException
。
在進行讀取前,串流中的位偏移量被重置為 0。
ImageInputStream
中的 readFully
c
- 用來接收寫入的 char 陣列。off
- 向 c 進行寫入的開始位置。len
- 要讀取的最大 char
數。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。public void readFully(int[] i, int off, int len) throws IOException
ImageInputStream
複製的描述len
個 int(有符號 32 位整數),並將其存儲到 i
中(從索引 off
開始)。如果到達串流末尾,則將拋出 EOFException
。
在進行讀取前,串流中的位偏移量被重置為 0。
ImageInputStream
中的 readFully
i
- 用來接收寫入的 int 陣列。off
- 向 i 進行寫入的開始位置。len
- 要讀取的最大 int
數。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。public void readFully(long[] l, int off, int len) throws IOException
ImageInputStream
複製的描述len
個 long(有符號 64 位整數),並將其存儲到 l
中(從索引 off
開始)。如果到達串流末尾,則將拋出 EOFException
。
在進行讀取前,串流中的位偏移量被重置為 0。
ImageInputStream
中的 readFully
l
- 用來接收寫入的 long 陣列。off
- 向 l 進行寫入的開始位置。len
- 要讀取的最大 long
數。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。public void readFully(float[] f, int off, int len) throws IOException
ImageInputStream
複製的描述len
個 float(32 位 IEEE 單精度浮點值),並將其存儲到 f
中(從索引 off
開始)。如果到達串流末尾,則將拋出 EOFException
。
在進行讀取前,串流中的位偏移量被重置為 0。
ImageInputStream
中的 readFully
f
- 用來接收寫入的 float 陣列。off
- 向 f 進行寫入的開始位置。len
- 要讀取的最大 float
數。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。public void readFully(double[] d, int off, int len) throws IOException
ImageInputStream
複製的描述len
個 double(64 位 IEEE 雙精度浮點值),並將其存儲到 d
中(從索引 off
開始)。如果到達串流末尾,則將拋出 EOFException
。
在進行讀取前,串流中的位偏移量被重置為 0。
ImageInputStream
中的 readFully
d
- 用來接收寫入的 double 陣列。off
- 向 d 進行寫入的開始位置。len
- 要讀取的最大 double
數。
EOFException
- 如果該串流在讀取所有位元組之前到達末尾。
IOException
- 如果發生 I/O 錯誤。public long getStreamPosition() throws IOException
ImageInputStream
複製的描述
ImageInputStream
中的 getStreamPosition
IOException
- 如果發生 I/O 錯誤。public int getBitOffset() throws IOException
ImageInputStream
複製的描述readBits
方法隱式地更新。值 0 表示所讀取位元組的最高有效位,值 7 表示所讀取位元組的最低有效位。
第一次打開串流時位偏移量被設置為 0,以後可以通過調用 seek
、skipBytes
、或者任何 read
或 readFully
方法將其重置為 0。
ImageInputStream
中的 getBitOffset
int
,包含 0 到 7 之間(包含兩者)的位偏移量。
IOException
- 如果發生 I/O 錯誤。ImageInputStream.setBitOffset(int)
public void setBitOffset(int bitOffset) throws IOException
ImageInputStream
複製的描述getStreamPosition
返回的位偏移量。值 0 表示所讀取位元組的最高有效位,值 7 表示所讀取位元組的最低有效位。
ImageInputStream
中的 setBitOffset
bitOffset
- 所需的偏移量,為 0 到 7 之間(包括兩者)的 int
的形式。
IOException
- 如果發生 I/O 錯誤。ImageInputStream.getBitOffset()
public int readBit() throws IOException
ImageInputStream
複製的描述int
(0
或 1
)的形式返回該位元組。位偏移量將加 1,模數將減 8。
ImageInputStream
中的 readBit
int
,包含 0
或 1
。
EOFException
- 如果該串流在讀取所有位之前到達末尾。
IOException
- 如果發生 I/O 錯誤。public long readBits(int numBits) throws IOException
ImageInputStream
複製的描述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
。
ImageInputStream
中的 readBits
numBits
- 要讀取的位數,為 0 到 64 之間(包含兩者)的 int
形式。
long
形式的位串,最後讀取的位存儲在最低有效位中。
EOFException
- 如果該串流在讀取所有位之前到達末尾。
IOException
- 如果發生 I/O 錯誤。public long length()
-1L
,指示串流的長度未知。子類別必須覆寫此方法來提供實際的長度資訊。
ImageInputStream
中的 length
public int skipBytes(int n) throws IOException
seek(getStreamPosition() + n)
推進當前串流位置。
位偏移量被重置為 0。
DataInput
中的 skipBytes
ImageInputStream
中的 skipBytes
n
- 要逆向尋找的位元組數。
int
,表示跳過的位元組數。
IOException
- 如果 getStreamPosition
計算起始或結束位置時拋出 IOException
。public long skipBytes(long n) throws IOException
seek(getStreamPosition() + n)
推進當前串流位置。
位偏移量被重置為 0。
ImageInputStream
中的 skipBytes
n
- 要逆向尋找的位元組數。
long
,表示跳過的位元組數。
IOException
- 如果 getStreamPosition
計算起始或結束位置時拋出 IOException
。public void seek(long pos) throws IOException
ImageInputStream
複製的描述 如果 pos
小於刷新位置(由 getflushedPosition
返回),那麼將拋出 IndexOutOfBoundsException
。
尋找檔案結束標記的後面是合法的,只有在該處執行讀取時才拋出 EOFException
。
ImageInputStream
中的 seek
pos
- 一個 long
,它包含所需的檔案指針位置。
IOException
- 如果發生任何 I/O 錯誤。public void mark()
ImageInputStream
中的 mark
public void reset() throws IOException
如果以前的標記位置位於串流的丟棄部分,則拋出 IOException
。
ImageInputStream
中的 reset
IOException
- 如果發生 I/O 錯誤。public void flushBefore(long pos) throws IOException
ImageInputStream
複製的描述IndexOutOfBoundsException
。
調用 flushBefore
可允許實作此介面的類別釋放存儲串流中的資料所使用的資源,如記憶體和磁碟空間。
ImageInputStream
中的 flushBefore
pos
- 一個 long
,它包含要刷新的串流前綴的長度。
IOException
- 如果發生 I/O 錯誤。public void flush() throws IOException
ImageInputStream
複製的描述flushBefore(getStreamPosition())
。
ImageInputStream
中的 flush
IOException
- 如果發生 I/O 錯誤。public long getFlushedPosition()
ImageInputStream
複製的描述flushBefore
上一次調用的值中的最大值。
ImageInputStream
中的 getFlushedPosition
long
形式)。public boolean isCached()
ImageInputStream
中的 isCached
ImageInputStream
快取記憶體資料,則返回 true
。ImageInputStream.isCachedMemory()
,
ImageInputStream.isCachedFile()
public boolean isCachedMemory()
ImageInputStream
中的 isCachedMemory
ImageInputStream
在主存中快取記憶體資料,則返回 true
。ImageInputStream.isCached()
,
ImageInputStream.isCachedFile()
public boolean isCachedFile()
ImageInputStream
中的 isCachedFile
ImageInputStream
在臨時檔案中快取記憶體資料,則返回 true
。ImageInputStream.isCached()
,
ImageInputStream.isCachedMemory()
public void close() throws IOException
ImageInputStream
複製的描述IOException
或錯誤行為。調用此方法可允許實作此介面的類別釋放與串流關聯的資源,如記憶體、磁碟空間或檔案描述符。
ImageInputStream
中的 close
IOException
- 如果發生 I/O 錯誤。protected void finalize() throws Throwable
close
方法來關閉所有開啟的輸入源。不應該從應用程序程式碼調用此方法。
Object
中的 finalize
Throwable
- 如果在父級類別終止過程中發生錯誤。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。