JavaTM 2 Platform
Standard Ed. 6

javax.imageio.stream
類別 ImageInputStreamImpl

java.lang.Object
  繼承者 javax.imageio.stream.ImageInputStreamImpl
所有已實作的介面:
DataInput, ImageInputStream
直接已知子類別:
FileCacheImageInputStream, FileImageInputStream, ImageOutputStreamImpl, MemoryCacheImageInputStream

public abstract class ImageInputStreamImpl
extends Object
implements ImageInputStream

實作 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()
          從串流中讀取單個位元組,並以 int01)的形式返回該位元組。
 long readBits(int numBits)
          從串流中讀取位串 (bitstring) 並以 long 的形式返回,使第一個讀取的位成為輸出的最高有效位。
 boolean readBoolean()
          從串流中讀取一個位元組,如果其不為 0,則返回 booleantrue;如果為 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
 

欄位詳細資訊

byteOrder

protected ByteOrder byteOrder
串流的位元組順序,其為列舉類別 java.nio.ByteOrder 的實例,其中 ByteOrder.BIG_ENDIAN 指示網路位元組順序,ByteOrder.LITTLE_ENDIAN 指示反向順序。預設情況下,該值為 ByteOrder.BIG_ENDIAN


streamPos

protected long streamPos
串流中的當前讀取位置。子類別負責根據其覆寫的任何會改變讀取位置的方法保持此值最新。


bitOffset

protected int bitOffset
串流中的當前位偏移量。子類別負責根據其覆寫的任何會改變位偏移量的方法保持此值最新。


flushedPos

protected long flushedPos
可能丟棄的資料前面的那個位置。不允許尋找較小的位置。flushedPos 將總是 >= 0。

建構子詳細資訊

ImageInputStreamImpl

public ImageInputStreamImpl()
建構一個 ImageInputStreamImpl

方法詳細資訊

checkClosed

protected final void checkClosed()
                          throws IOException
如果已經關閉串流,則拋出 IOException。子類別可以從其任何要求不關閉串流的方法中調用此方法。

拋出:
IOException - 如果已關閉串流。

setByteOrder

public void setByteOrder(ByteOrder byteOrder)
從介面 ImageInputStream 複製的描述
設置希望以後從此串流中讀取資料值時使用的位元組順序。例如,如果以 4 位元組整數形式讀取位元組序列 '0x01 0x02 0x03 0x04',則使用網路位元組順序時結果為值 '0x01020304',使用逆向位元組順序時為值 '0x04030201'。

列舉類別 java.nio.ByteOrder 用於指定位元組順序。值 ByteOrder.BIG_ENDIAN 指定所謂的 big-endian 或網路位元組順序,該順序中高位位元組在前。Motorola 和 Sparc 處理器用此格式存儲資料,而 Intel 處理器使用與之相反的 ByteOrder.LITTLE_ENDIAN 順序存儲資料。

位元組順序對 readBits 方法返回的結果(或 ImageOutputStream.writeBits 寫入的值)沒有任何影響。

指定者:
介面 ImageInputStream 中的 setByteOrder
參數:
byteOrder - ByteOrder.BIG_ENDIANjava.nio.ByteOrder.LITTLE_ENDIAN,指示以後讀取時是使用網路順序還是使用與之相反的順序。
另請參見:
ByteOrder, ImageInputStream.getByteOrder(), ImageInputStream.readBits(int)

getByteOrder

public ByteOrder getByteOrder()
從介面 ImageInputStream 複製的描述
java.nio.ByteOrder 列舉實例的形式返回從此串流中讀取資料值時所使用的位元組順序。

指定者:
介面 ImageInputStream 中的 getByteOrder
返回:
ByteOrder.BIG_ENDIANByteOrder.LITTLE_ENDIAN,指示要使用的位元組順序。
另請參見:
ByteOrder, ImageInputStream.setByteOrder(java.nio.ByteOrder)

read

public abstract int read()
                  throws IOException
從串流中讀取單個位元組,並以 int(0 到 255 之間)形式返回該位元組。 如果到達 EOF,則返回 -1

子類別必須提供此方法的實作。子類別實作在退出前應該更新串流位置。

在發生讀取前,串流中的位偏移量必須被重置為 0。

指定者:
介面 ImageInputStream 中的 read
返回:
串流中下一個位元組的值;如果到達 EOF,則返回 -1
拋出:
IOException - 如果串流已經被關閉。

read

public int read(byte[] b)
         throws IOException
調用 read(b, 0, b.length) 的便捷方法。

在發生讀取前,串流中的位偏移量被重置為 0。

指定者:
介面 ImageInputStream 中的 read
參數:
b - 用來接收寫入的 byte 陣列。
返回:
實際讀取的位元組數;或者 -1,指示 EOF。
拋出:
NullPointerException - 如果 bnull
IOException - 如果發生 I/O 錯誤。

read

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 - 如果 bnull
IOException - 如果發生 I/O 錯誤。

readBytes

public void readBytes(IIOByteBuffer buf,
                      int len)
               throws IOException
從介面 ImageInputStream 複製的描述
從串流中讀取至多 len 個位元組,並修改提供的 IIOByteBuffer 以指示可以找到資料的 byte 陣列、偏移量和長度。調用者不應該試圖修改 IIOByteBuffer 中找到的資料。

在進行讀取前,串流中的位偏移量被重置為 0。

指定者:
介面 ImageInputStream 中的 readBytes
參數:
buf - 要修改的 IIOByteBuffer 物件。
len - 要讀取的最大 byte 數。
拋出:
IOException - 如果發生 I/O 錯誤。

readBoolean

public boolean readBoolean()
                    throws IOException
從介面 ImageInputStream 複製的描述
從串流中讀取一個位元組,如果其不為 0,則返回 booleantrue;如果為 0,則返回 false

在進行讀取前,串流中的位偏移量被重置為 0。

指定者:
介面 DataInput 中的 readBoolean
指定者:
介面 ImageInputStream 中的 readBoolean
返回:
取自串流的 boolean 值。
拋出:
EOFException - 如果到達串流末尾。
IOException - 如果發生 I/O 錯誤。

readByte

public byte readByte()
              throws IOException
從介面 ImageInputStream 複製的描述
從串流中讀取一個位元組,並以 byte 值的形式返回該位元組。0x000x7f 之間的位元組值表示 0127 之間的整數值。0x800xff 之間的位元組值表示 -128-1 之間的負整數值。

在進行讀取前,串流中的位偏移量被重置為 0。

指定者:
介面 DataInput 中的 readByte
指定者:
介面 ImageInputStream 中的 readByte
返回:
取自串流的單個位元組值。
拋出:
EOFException - 如果到達串流末尾。
IOException - 如果發生 I/O 錯誤。

readUnsignedByte

public int readUnsignedByte()
                     throws IOException
從介面 ImageInputStream 複製的描述
從串流中讀取一個位元組,將其轉換為 int(概念上),使用 0xff 屏蔽以便去掉所有符號擴展位,然後以 byte 值的形式返回。

於是,0x000x7f 之間的位元組值便作為 0127 之間的整數值返回。0x800xff 之間的位元組值通常表示為負的 byte 值,它們將被映射成 128255 之間的正整數。

在進行讀取前,串流中的位偏移量被重置為 0。

指定者:
介面 DataInput 中的 readUnsignedByte
指定者:
介面 ImageInputStream 中的 readUnsignedByte
返回:
取自串流的無符號 byte 值。
拋出:
EOFException - 如果到達串流末尾。
IOException - 如果發生 I/O 錯誤。

readShort

public short readShort()
                throws IOException
從介面 ImageInputStream 複製的描述
從串流中讀取兩個位元組,根據當前位元組順序將其連接(概念上),然後以 short 值的形式返回結果。

在進行讀取前,串流中的位偏移量被重置為 0。

指定者:
介面 DataInput 中的 readShort
指定者:
介面 ImageInputStream 中的 readShort
返回:
取自串流的有符號 short 值。
拋出:
EOFException - 如果該串流在讀取所有位元組之前到達末尾。
IOException - 如果發生 I/O 錯誤。
另請參見:
ImageInputStream.getByteOrder()

readUnsignedShort

public int readUnsignedShort()
                      throws IOException
從介面 ImageInputStream 複製的描述
從串流中讀取兩個位元組,根據當前位元組順序將其連接(概念上),將得到的值轉換為 int,使用 0xffff 屏蔽以便去掉所有符號擴展位,然後以無符號 int 值的形式返回結果。

在進行讀取前,串流中的位偏移量被重置為 0。

指定者:
介面 DataInput 中的 readUnsignedShort
指定者:
介面 ImageInputStream 中的 readUnsignedShort
返回:
取自串流的無符號 short 值(int 形式)。
拋出:
EOFException - 如果該串流在讀取所有位元組之前到達末尾。
IOException - 如果發生 I/O 錯誤。
另請參見:
ImageInputStream.getByteOrder()

readChar

public char readChar()
              throws IOException
從介面 ImageInputStream 複製的描述
readUnsignedShort 等效,唯一的不同在於它的結果使用 char 資料型別返回。

在進行讀取前,串流中的位偏移量被重置為 0。

指定者:
介面 DataInput 中的 readChar
指定者:
介面 ImageInputStream 中的 readChar
返回:
取自串流的無符號 char 值。
拋出:
EOFException - 如果該串流在讀取所有位元組之前到達末尾。
IOException - 如果發生 I/O 錯誤。
另請參見:
ImageInputStream.readUnsignedShort()

readInt

public int readInt()
            throws IOException
從介面 ImageInputStream 複製的描述
從串流中讀取 4 個位元組,根據當前位元組順序將其連接(概念上),然後以 int 值的形式返回結果。

忽略串流中的位偏移量,將其視為 0。

指定者:
介面 DataInput 中的 readInt
指定者:
介面 ImageInputStream 中的 readInt
返回:
取自串流的有符號 int 值。
拋出:
EOFException - 如果該串流在讀取所有位元組之前到達末尾。
IOException - 如果發生 I/O 錯誤。
另請參見:
ImageInputStream.getByteOrder()

readUnsignedInt

public long readUnsignedInt()
                     throws IOException
從介面 ImageInputStream 複製的描述
從串流中讀取 4 個位元組,根據當前位元組順序將其連接(概念上),將得到的值轉換為 long,使用 0xffffffffL 屏蔽以便去掉所有符號擴展位,然後以無符號 long 值的形式返回結果。

在進行讀取前,串流中的位偏移量被重置為 0。

指定者:
介面 ImageInputStream 中的 readUnsignedInt
返回:
取自串流的無符號 int 值(long 形式)。
拋出:
EOFException - 如果該串流在讀取所有位元組之前到達末尾。
IOException - 如果發生 I/O 錯誤。
另請參見:
ImageInputStream.getByteOrder()

readLong

public long readLong()
              throws IOException
從介面 ImageInputStream 複製的描述
從串流中讀取 8 個位元組,根據當前位元組順序將其連接(概念上),然後以 long 值的形式返回結果。

在進行讀取前,串流中的位偏移量被重置為 0。

指定者:
介面 DataInput 中的 readLong
指定者:
介面 ImageInputStream 中的 readLong
返回:
取自串流的有符號 long 值。
拋出:
EOFException - 如果該串流在讀取所有位元組之前到達末尾。
IOException - 如果發生 I/O 錯誤。
另請參見:
ImageInputStream.getByteOrder()

readFloat

public float readFloat()
                throws IOException
從介面 ImageInputStream 複製的描述
從串流中讀取 4 個位元組,根據當前位元組順序將其連接(概念上),然後以 float 值的形式返回結果。

在進行讀取前,串流中的位偏移量被重置為 0。

指定者:
介面 DataInput 中的 readFloat
指定者:
介面 ImageInputStream 中的 readFloat
返回:
取自串流的 float 值。
拋出:
EOFException - 如果該串流在讀取所有位元組之前到達末尾。
IOException - 如果發生 I/O 錯誤。
另請參見:
ImageInputStream.getByteOrder()

readDouble

public double readDouble()
                  throws IOException
從介面 ImageInputStream 複製的描述
從串流中讀取 8 個位元組,根據當前位元組順序將其連接(概念上),然後以 double 值的形式返回結果。

在進行讀取前,串流中的位偏移量被重置為 0。

指定者:
介面 DataInput 中的 readDouble
指定者:
介面 ImageInputStream 中的 readDouble
返回:
取自串流的 double 值。
拋出:
EOFException - 如果該串流在讀取所有位元組之前到達末尾。
IOException - 如果發生 I/O 錯誤。
另請參見:
ImageInputStream.getByteOrder()

readLine

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
返回:
一個 String,它包含取自串流的一行文本。
拋出:
IOException - 如果發生 I/O 錯誤。

readUTF

public String readUTF()
               throws IOException
從介面 ImageInputStream 複製的描述
讀入一個已使用 UTF-8 修改版格式編碼的字元串。readUTF 的常規協定是:該方法讀取使用 UTF-8 修改版格式編碼的 Unicode 字元串的表示形式;然後以 String 的形式返回此字元串。

首先,讀取兩個位元組並按 readUnsignedShort 方法的方式使用這兩個位元組建構一個無符號 16 位整數,使用的是網路位元組順序(無論當前設置的是哪種位元組順序)。該整數值被稱為 UTF 長度,它指定要讀取的額外位元組數。然後成組地將這些位元組轉換為字元。每組的長度根據該組第一個位元組的值計算。緊跟在某個組後面的位元組(如果有)是下一組的第一個位元組。

如果組的第一個位元組與位網要 0xxxxxxx(其中 x 表示“可能為 01”)比對,則該組只有這一個位元組。該位元組被左側補 0,轉換成一個字元。

如果組的第一個位元組與位網要 110xxxxx 比對,則該組只由位元組 a 和另一個位元組 b 組成。如果沒有位元組 b(因為位元組 a 是要讀取的最後一個位元組),或者位元組 b 與位網要 10xxxxxx 不比對,則拋出 UTFDataFormatException。否則,將該組轉換成字元:


 (char)(((a& 0x1F) << 6) | (b & 0x3F))
 
如果組的第一個位元組與位網要 1110xxxx 比對,則該組由位元組 a 和另外兩個位元組 bc 組成。如果沒有位元組 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
返回:
從串流中讀取的 String。
拋出:
EOFException - 如果此串流在讀取所有位元組之前到達末尾。
UTFDataFormatException - 如果這些位元組不表示一個有效的、UTF-8 修改版編碼的字元串。
IOException - 如果發生 I/O 錯誤。

readFully

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 錯誤。

readFully

public void readFully(byte[] b)
               throws IOException
從介面 ImageInputStream 複製的描述
從串流中讀取 b.length 個位元組,並將其存儲到 b 中(從索引 0 開始)。如果到達串流末尾,則將拋出 EOFException

在進行讀取前,串流中的位偏移量被重置為 0。

指定者:
介面 DataInput 中的 readFully
指定者:
介面 ImageInputStream 中的 readFully
參數:
b - 一個 byte 陣列。
拋出:
EOFException - 如果該串流在讀取所有位元組之前到達末尾。
IOException - 如果發生 I/O 錯誤。

readFully

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 錯誤。

readFully

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 錯誤。

readFully

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 錯誤。

readFully

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 錯誤。

readFully

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 錯誤。

readFully

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 錯誤。

getStreamPosition

public long getStreamPosition()
                       throws IOException
從介面 ImageInputStream 複製的描述
返回串流的當前位元組位置。下一次讀取將從此偏移量開始。

指定者:
介面 ImageInputStream 中的 getStreamPosition
返回:
一個套件含串流位置 long 值。
拋出:
IOException - 如果發生 I/O 錯誤。

getBitOffset

public int getBitOffset()
                 throws IOException
從介面 ImageInputStream 複製的描述
以整數的形式返回當前位偏移量,該整數在 0 到 7 之間(包含兩者)。位偏移量通過調用 readBits 方法隱式地更新。值 0 表示所讀取位元組的最高有效位,值 7 表示所讀取位元組的最低有效位。

第一次打開串流時位偏移量被設置為 0,以後可以通過調用 seekskipBytes、或者任何 readreadFully 方法將其重置為 0。

指定者:
介面 ImageInputStream 中的 getBitOffset
返回:
一個 int,包含 0 到 7 之間(包含兩者)的位偏移量。
拋出:
IOException - 如果發生 I/O 錯誤。
另請參見:
ImageInputStream.setBitOffset(int)

setBitOffset

public void setBitOffset(int bitOffset)
                  throws IOException
從介面 ImageInputStream 複製的描述
將位偏移量設置為 0 到 7 之間(包含兩者)的整數。不改變串流中由 getStreamPosition 返回的位偏移量。值 0 表示所讀取位元組的最高有效位,值 7 表示所讀取位元組的最低有效位。

指定者:
介面 ImageInputStream 中的 setBitOffset
參數:
bitOffset - 所需的偏移量,為 0 到 7 之間(包括兩者)的 int 的形式。
拋出:
IOException - 如果發生 I/O 錯誤。
另請參見:
ImageInputStream.getBitOffset()

readBit

public int readBit()
            throws IOException
從介面 ImageInputStream 複製的描述
從串流中讀取單個位元組,並以 int01)的形式返回該位元組。位偏移量將加 1,模數將減 8。

指定者:
介面 ImageInputStream 中的 readBit
返回:
一個 int,包含 01
拋出:
EOFException - 如果該串流在讀取所有位之前到達末尾。
IOException - 如果發生 I/O 錯誤。

readBits

public long readBits(int numBits)
              throws IOException
從介面 ImageInputStream 複製的描述
從串流中讀取位串 (bitstring) 並以 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 錯誤。

length

public long length()
返回 -1L,指示串流的長度未知。子類別必須覆寫此方法來提供實際的長度資訊。

指定者:
介面 ImageInputStream 中的 length
返回:
指示不知道長度的 -1L。

skipBytes

public int skipBytes(int n)
              throws IOException
通過調用 seek(getStreamPosition() + n) 推進當前串流位置。

位偏移量被重置為 0。

指定者:
介面 DataInput 中的 skipBytes
指定者:
介面 ImageInputStream 中的 skipBytes
參數:
n - 要逆向尋找的位元組數。
返回:
一個 int,表示跳過的位元組數。
拋出:
IOException - 如果 getStreamPosition 計算起始或結束位置時拋出 IOException

skipBytes

public long skipBytes(long n)
               throws IOException
通過調用 seek(getStreamPosition() + n) 推進當前串流位置。

位偏移量被重置為 0。

指定者:
介面 ImageInputStream 中的 skipBytes
參數:
n - 要逆向尋找的位元組數。
返回:
一個 long,表示跳過的位元組數。
拋出:
IOException - 如果 getStreamPosition 計算起始或結束位置時拋出 IOException

seek

public void seek(long pos)
          throws IOException
從介面 ImageInputStream 複製的描述
將當前串流位置設置為所需的位置。下一次讀取將在此位置上進行。位偏移量被設置為 0。

如果 pos 小於刷新位置(由 getflushedPosition 返回),那麼將拋出 IndexOutOfBoundsException

尋找檔案結束標記的後面是合法的,只有在該處執行讀取時才拋出 EOFException

指定者:
介面 ImageInputStream 中的 seek
參數:
pos - 一個 long,它包含所需的檔案指針位置。
拋出:
IOException - 如果發生任何 I/O 錯誤。

mark

public void mark()
將當前串流位置推進到標記位置的堆疊(stack)空間上。

指定者:
介面 ImageInputStream 中的 mark

reset

public void reset()
           throws IOException
根據標記的堆疊(stack)空間重置當前串流位元組和位位置。

如果以前的標記位置位於串流的丟棄部分,則拋出 IOException

指定者:
介面 ImageInputStream 中的 reset
拋出:
IOException - 如果發生 I/O 錯誤。

flushBefore

public void flushBefore(long pos)
                 throws IOException
從介面 ImageInputStream 複製的描述
丟棄所指示位置之前的串流初始部分。試圖尋找串流的刷新部分中的偏移量將導致拋出 IndexOutOfBoundsException

調用 flushBefore 可允許實作此介面的類別釋放存儲串流中的資料所使用的資源,如記憶體和磁碟空間。

指定者:
介面 ImageInputStream 中的 flushBefore
參數:
pos - 一個 long,它包含要刷新的串流前綴的長度。
拋出:
IOException - 如果發生 I/O 錯誤。

flush

public void flush()
           throws IOException
從介面 ImageInputStream 複製的描述
丟棄當前串流位置之前的串流初始部分。等效於 flushBefore(getStreamPosition())

指定者:
介面 ImageInputStream 中的 flush
拋出:
IOException - 如果發生 I/O 錯誤。

getFlushedPosition

public long getFlushedPosition()
從介面 ImageInputStream 複製的描述
返回串流中可以執行尋找的最早位置。返回值將是所有傳入 flushBefore 上一次調用的值中的最大值。

指定者:
介面 ImageInputStream 中的 getFlushedPosition
返回:
用於尋找的最早的合法位置(long 形式)。

isCached

public boolean isCached()
預設實作返回 false。如果子類別快取記憶體資料,則其應該覆寫此方法。

指定者:
介面 ImageInputStream 中的 isCached
返回:
如果此 ImageInputStream 快取記憶體資料,則返回 true
另請參見:
ImageInputStream.isCachedMemory(), ImageInputStream.isCachedFile()

isCachedMemory

public boolean isCachedMemory()
預設實作返回 false。如果子類別在主存中快取記憶體資料,則其應該覆寫此方法。

指定者:
介面 ImageInputStream 中的 isCachedMemory
返回:
如果此 ImageInputStream 在主存中快取記憶體資料,則返回 true
另請參見:
ImageInputStream.isCached(), ImageInputStream.isCachedFile()

isCachedFile

public boolean isCachedFile()
預設實作返回 false。如果子類別在臨時檔案中快取記憶體資料,則其應該覆寫此方法。

指定者:
介面 ImageInputStream 中的 isCachedFile
返回:
如果此 ImageInputStream 在臨時檔案中快取記憶體資料,則返回 true
另請參見:
ImageInputStream.isCached(), ImageInputStream.isCachedMemory()

close

public void close()
           throws IOException
從介面 ImageInputStream 複製的描述
關閉串流。試圖存取已經關閉的串流將導致 IOException 或錯誤行為。調用此方法可允許實作此介面的類別釋放與串流關聯的資源,如記憶體、磁碟空間或檔案描述符。

指定者:
介面 ImageInputStream 中的 close
拋出:
IOException - 如果發生 I/O 錯誤。

finalize

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