JavaTM 2 Platform
Standard Ed. 6

java.io
類別 RandomAccessFile

java.lang.Object
  繼承者 java.io.RandomAccessFile
所有已實作的介面:
Closeable, DataInput, DataOutput

public class RandomAccessFile
extends Object
implements DataOutput, DataInput, Closeable

此類別的實例支持對隨機存取檔案的讀取和寫入。隨機存取檔案的行為類似存儲在檔案系統中的一個大型 byte 陣列。存在指向該隱含陣列的鼠標或索引,稱為檔案指針;輸入操作從檔案指針開始讀取位元組,並隨著對位元組的讀取而前移此檔案指針。如果隨機存取檔案以讀取/寫入網要創建,則輸出操作也可用;輸出操作從檔案指針開始寫入位元組,並隨著對位元組的寫入而前移此檔案指針。寫入隱含陣列的當前末尾之後的輸出操作導致該陣列擴展。該檔案指針可以通過 getFilePointer 方法讀取,並通過 seek 方法設置。

通常,如果此類別中的所有讀取例程在讀取所需數量的位元組之前已到達檔案末尾,則拋出 EOFException(是一種 IOException)。如果由於某些原因無法讀取任何位元組,而不是在讀取所需數量的位元組之前已到達檔案末尾,則拋出 IOException,而不是 EOFException。需要特別指出的是,如果串流已被關閉,則可能拋出 IOException

從以下版本開始:
JDK1.0

建構子摘要
RandomAccessFile(File file, String mode)
          創建從中讀取和向其中寫入(可選)的隨機存取檔案串流,該檔案由 File 參數指定。
RandomAccessFile(String name, String mode)
          創建從中讀取和向其中寫入(可選)的隨機存取檔案串流,該檔案具有指定名稱。
 
方法摘要
 void close()
          關閉此隨機存取檔案串流並釋放與該串流關聯的所有系統資源。
 FileChannel getChannel()
          返回與此檔案關聯的唯一 FileChannel 物件。
 FileDescriptor getFD()
          返回與此串流關聯的不透明檔案描述符物件。
 long getFilePointer()
          返回此檔案中的當前偏移量。
 long length()
          返回此檔案的長度。
 int read()
          從此檔案中讀取一個資料位元組。
 int read(byte[] b)
          將最多 b.length 個資料位元組從此檔案讀入 byte 陣列。
 int read(byte[] b, int off, int len)
          將最多 len 個資料位元組從此檔案讀入 byte 陣列。
 boolean readBoolean()
          從此檔案讀取一個 boolean
 byte readByte()
          從此檔案讀取一個有符號的八位值。
 char readChar()
          從此檔案讀取一個字元。
 double readDouble()
          從此檔案讀取一個 double
 float readFloat()
          從此檔案讀取一個 float
 void readFully(byte[] b)
          將 b.length 個位元組從此檔案讀入 byte 陣列,並從當前檔案指針開始。
 void readFully(byte[] b, int off, int len)
          將正好 len 個位元組從此檔案讀入 byte 陣列,並從當前檔案指針開始。
 int readInt()
          從此檔案讀取一個有符號的 32 位整數。
 String readLine()
          從此檔案讀取文本的下一行。
 long readLong()
          從此檔案讀取一個有符號的 64 位整數。
 short readShort()
          從此檔案讀取一個有符號的 16 位數。
 int readUnsignedByte()
          從此檔案讀取一個無符號的八位數。
 int readUnsignedShort()
          從此檔案讀取一個無符號的 16 位數。
 String readUTF()
          從此檔案讀取一個字元串。
 void seek(long pos)
          設置到此檔案開頭測量到的檔案指針偏移量,在該位置發生下一個讀取或寫入操作。
 void setLength(long newLength)
          設置此檔案的長度。
 int skipBytes(int n)
          嘗試跳過輸入的 n 個位元組以丟棄跳過的位元組。
 void write(byte[] b)
          將 b.length 個位元組從指定 byte 陣列寫入到此檔案,並從當前檔案指針開始。
 void write(byte[] b, int off, int len)
          將 len 個位元組從指定 byte 陣列寫入到此檔案,並從偏移量 off 處開始。
 void write(int b)
          向此檔案寫入指定的位元組。
 void writeBoolean(boolean v)
          按單位元組值將 boolean 寫入該檔案。
 void writeByte(int v)
          按單位元組值將 byte 寫入該檔案。
 void writeBytes(String s)
          按位元組序列將該字元串寫入該檔案。
 void writeChar(int v)
          按雙位元組值將 char 寫入該檔案,先寫高位元組。
 void writeChars(String s)
          按字元序列將一個字元串寫入該檔案。
 void writeDouble(double v)
          使用 Double 類別中的 doubleToLongBits 方法將雙精度參數轉換為一個 long,然後按八位元組數量將該 long 值寫入該檔案,先定高位元組。
 void writeFloat(float v)
          使用 Float 類別中的 floatToIntBits 方法將浮點參數轉換為一個 int,然後按四位元組數量將該 int 值寫入該檔案,先寫高位元組。
 void writeInt(int v)
          按四個位元組將 int 寫入該檔案,先寫高位元組。
 void writeLong(long v)
          按八個位元組將 long 寫入該檔案,先寫高位元組。
 void writeShort(int v)
          按兩個位元組將 short 寫入該檔案,先寫高位元組。
 void writeUTF(String str)
          使用 modified UTF-8 編碼以與機器無關的方式將一個字元串寫入該檔案。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

RandomAccessFile

public RandomAccessFile(String name,
                        String mode)
                 throws FileNotFoundException
創建從中讀取和向其中寫入(可選)的隨機存取檔案串流,該檔案具有指定名稱。將創建一個新的 FileDescriptor 物件來表示到檔案的連接。

mode 參數指定用以打開檔案的存取網要。允許的值及其含意如 RandomAccessFile(File,String) 建構子所指定的那樣。

如果存在安全管理器,則使用 name 作為其參數調用其 checkRead 方法,以查看是否允許對該檔案進行讀取存取。如果該網要允許寫入,那麼還使用 name 作為安全管理器的參數來調用其 checkWrite 方法,以查看是否允許對該檔案進行寫入存取。

參數:
name - 取決於系統的檔案名
mode - 此存取 mode
拋出:
IllegalArgumentException - 如果此網要參數與 "r""rw""rws""rwd" 的其中一個不相等
FileNotFoundException - 如果該網要為 "r",但給定的字元串表示一個現有的常規檔案,或者該網要以 "rw" 開頭,但給定的字元串不表示一個現有的可寫常規檔案,而且無法創建具有該名稱的新常規檔案,或者在打開或創建該檔案時發生一些其他錯誤
SecurityException - 如果存在安全管理器,並且其 checkRead 方法拒絕對該檔案的讀取存取,或者該網要為 "rw",並且該安全管理器的 checkWrite 方法拒絕對該檔案的寫入存取
另請參見:
SecurityException, SecurityManager.checkRead(java.lang.String), SecurityManager.checkWrite(java.lang.String)

RandomAccessFile

public RandomAccessFile(File file,
                        String mode)
                 throws FileNotFoundException
創建從中讀取和向其中寫入(可選)的隨機存取檔案串流,該檔案由 File 參數指定。將創建一個新的 FileDescriptor 物件來表示此檔案的連接。

mode 參數指定用以打開檔案的存取網要。允許的值及其含意為:

含意

"r" 以只讀方式打開。調用結果物件的任何 write 方法都將導致拋出 IOException
"rw" 打開以便讀取和寫入。如果該檔案尚不存在,則嘗試創建該檔案。
"rws" 打開以便讀取和寫入,對於 "rw",還要求對檔案的內容或元資料的每個更新都同步寫入到底層存儲設備。
"rwd"   打開以便讀取和寫入,對於 "rw",還要求對檔案內容的每個更新都同步寫入到底層存儲設備。
"rws""rwd" 網要的工作方式極其類似
FileChannel 類別的 force(boolean) 方法,分別傳遞 truefalse 參數,除非它們始終應用於每個 I/O 操作,並因此通常更為高效。如果該檔案位於本地存儲設備上,那麼當返回此類別的一個方法的調用時,可以保證由該調用對此檔案所做的所有更改均被寫入該設備。這對確保在系統崩潰時不會丟失重要資訊特別有用。如果該檔案不在本地設備上,則無法提供這樣的保證。

"rwd" 網要可用於減少執行的 I/O 操作數量。使用 "rwd" 僅要求更新要寫入存儲的檔案的內容;使用 "rws" 要求更新要寫入的檔案內容及其元資料,這通常要求至少一個以上的低層級別 I/O 操作。

如果存在安全管理器,則使用 file 參數的路徑名作為其參數調用它的 checkRead 方法,以查看是否允許對該檔案進行讀取存取。如果該網要允許寫入,那麼還使用該路徑參數調用該安全管理器的 checkWrite 方法,以查看是否允許對該檔案進行寫入存取。

參數:
file - 該檔案物件
mode - 存取網要,如所述
拋出:
IllegalArgumentException - 如果此網要參數與 "r""rw""rws""rwd" 的其中一個不相等
FileNotFoundException - 如果該網要為 "r",但給定的檔案物件不表示一個現有的常規檔案,或者該網要以 "rw" 開頭,但給定的檔案物件不表示一個現有的可寫常規檔案,而且無法創建具有該名稱的新常規檔案,或者在打開或創建該檔案時發生一些其他錯誤
SecurityException - 如果存在安全管理器,並且其 checkRead 方法拒絕對該檔案的讀取存取,或者該網要為 "rw",並且該安全管理器的 checkWrite 方法拒絕對該檔案的寫入存取
另請參見:
SecurityManager.checkRead(java.lang.String), SecurityManager.checkWrite(java.lang.String), FileChannel.force(boolean)
方法詳細資訊

getFD

public final FileDescriptor getFD()
                           throws IOException
返回與此串流關聯的不透明檔案描述符物件。

返回:
與此串流關聯的不透明檔案描述符物件。
拋出:
IOException - 如果發生 I/O 錯誤。
另請參見:
FileDescriptor

getChannel

public final FileChannel getChannel()
返回與此檔案關聯的唯一 FileChannel 物件。

返回通道的 java.nio.channels.FileChannel#position()position 將始終等於 getFilePointer 方法返回的此物件的檔案指針偏移量。顯式或者通過讀取或寫入位元組來更改此物件的檔案指針偏移量將更改通道的位置,反之亦然。通過此物件更改此檔案的長度將更改通過檔案通道看到的長度,反之亦然。

返回:
與此檔案關聯的檔案通道
從以下版本開始:
1.4

read

public int read()
         throws IOException
從此檔案中讀取一個資料位元組。以整數形式返回此位元組,範圍在 0 到 255 (0x00-0x0ff)。如果尚無輸入可用,將阻塞此方法。

儘管 RandomAccessFile 不是 InputStream 的子類別,但此方法的行為與 InputStreamInputStream.read() 方法完全一樣。

返回:
下一個資料位元組,如果已到達檔案的末尾,則返回 -1
拋出:
IOException - 如果發生 I/O 錯誤。如果已到達檔案的末尾,則不拋出此異常。

read

public int read(byte[] b,
                int off,
                int len)
         throws IOException
將最多 len 個資料位元組從此檔案讀入 byte 陣列。在至少一個輸入位元組可用前,此方法一直阻塞。

儘管 RandomAccessFile 不是 InputStream 的子類別,但此方法的行為與 InputStreamInputStream.read(byte[], int, int) 方法完全一樣。

參數:
b - 讀入資料的緩衝區。
off - 寫入資料的陣列 b 中的初始偏移量。
len - 讀取的最多位元組數。
返回:
讀入緩衝區的總位元組數,如果由於已到達檔案的末尾而不再有資料,則返回 -1
拋出:
IOException - 如果由於檔案結束之外的某種原因不能讀取第一個位元組,或者隨機存取檔案已關閉,或者發生其他 I/O 錯誤。
NullPointerException - 如果 bnull
IndexOutOfBoundsException - 如果 off為負,len 為負,或者 len 大於 b.length - off

read

public int read(byte[] b)
         throws IOException
將最多 b.length 個資料位元組從此檔案讀入 byte 陣列。在至少一個輸入位元組可用前,此方法一直阻塞。

儘管 RandomAccessFile 不是 InputStream 的子類別,但此方法的行為與 InputStreamInputStream.read(byte[]) 方法完全一樣。

參數:
b - 將資料讀入的緩衝區。
返回:
讀入緩衝區的總位元組數,如果由於已到達此檔案的末尾而不再有資料,則返回 -1
拋出:
IOException - 如果由於檔案結束之外的某種原因不能讀取第一個位元組,或者隨機存取檔案已關閉,或者發生其他 I/O 錯誤。
NullPointerException - 如果 bnull

readFully

public final void readFully(byte[] b)
                     throws IOException
b.length 個位元組從此檔案讀入 byte 陣列,並從當前檔案指針開始。在讀取到請求數量的位元組之前,此方法將從該檔案重複讀取。在讀取了請求數量的位元組、檢測到串流的末尾或者拋出異常前,此方法一直阻塞。

指定者:
介面 DataInput 中的 readFully
參數:
b - 將資料讀入的緩衝區。
拋出:
EOFException - 如果在讀取所有位元組之前此檔案已到達末尾。
IOException - 如果發生 I/O 錯誤。

readFully

public final void readFully(byte[] b,
                            int off,
                            int len)
                     throws IOException
將正好 len 個位元組從此檔案讀入 byte 陣列,並從當前檔案指針開始。在讀取到請求數量的位元組之前,此方法將從該檔案重複讀取。在讀取了請求數量的位元組、檢測到串流的末尾或者拋出異常前,此方法一直阻塞。

指定者:
介面 DataInput 中的 readFully
參數:
b - 讀入資料的緩衝區。
off - 資料的初始偏移量。
len - 要讀取的位元組數。
拋出:
EOFException - 如果在讀取所有位元組之前此檔案已到達末尾。
IOException - 如果發生 I/O 錯誤。

skipBytes

public int skipBytes(int n)
              throws IOException
嘗試跳過輸入的 n 個位元組以丟棄跳過的位元組。

此方法可能跳過一些較少數量的位元組(可能包括零)。這可能由任意數量的條件引起;在跳過 n 個位元組之前已到達檔案的末尾只是其中的一種可能。此方法從不拋出 EOFException。返回跳過的實際位元組數。如果 n 為負數,則不跳過任何位元組。

指定者:
介面 DataInput 中的 skipBytes
參數:
n - 要跳過的位元組數。
返回:
跳過的實際位元組數。
拋出:
IOException - 如果發生 I/O 錯誤。

write

public void write(int b)
           throws IOException
向此檔案寫入指定的位元組。從當前檔案指針開始寫入。

指定者:
介面 DataOutput 中的 write
參數:
b - 要寫入的 byte
拋出:
IOException - 如果發生 I/O 錯誤。

write

public void write(byte[] b)
           throws IOException
b.length 個位元組從指定 byte 陣列寫入到此檔案,並從當前檔案指針開始。

指定者:
介面 DataOutput 中的 write
參數:
b - 資料。
拋出:
IOException - 如果發生 I/O 錯誤。

write

public void write(byte[] b,
                  int off,
                  int len)
           throws IOException
len 個位元組從指定 byte 陣列寫入到此檔案,並從偏移量 off 處開始。

指定者:
介面 DataOutput 中的 write
參數:
b - 資料。
off - 資料的初始偏移量。
len - 要寫入的位元組數。
拋出:
IOException - 如果發生 I/O 錯誤。

getFilePointer

public long getFilePointer()
                    throws IOException
返回此檔案中的當前偏移量。

返回:
到此檔案開頭的偏移量(以位元組為單位),在該位置發生下一個讀取或寫入操作。
拋出:
IOException - 如果發生 I/O 錯誤。

seek

public void seek(long pos)
          throws IOException
設置到此檔案開頭測量到的檔案指針偏移量,在該位置發生下一個讀取或寫入操作。偏移量的設置可能會超出檔案末尾。偏移量的設置超出檔案末尾不會改變檔案的長度。只有在偏移量的設置超出檔案末尾的情況下對檔案進行寫入才會更改其長度。

參數:
pos - 從檔案開頭以位元組為單位測量的偏移量位置,在該位置設置檔案指針。
拋出:
IOException - 如果 pos 小於 0 或者發生 I/O 錯誤。

length

public long length()
            throws IOException
返回此檔案的長度。

返回:
按位元組測量的此檔案的長度。
拋出:
IOException - 如果發生 I/O 錯誤。

setLength

public void setLength(long newLength)
               throws IOException
設置此檔案的長度。

如果 length 方法返回的檔案的現有長度大於 newLength 參數,則該檔案將被截短。在此情況下,如果 getFilePointer 方法返回的檔案偏移量大於 newLength,那麼在返回此方法後,該偏移量將等於 newLength

如果 length 方法返回的檔案的現有長度小於 newLength 參數,則該檔案將被擴展。在此情況下,未定義檔案擴展部分的內容。

參數:
newLength - 檔案的所需長度
拋出:
IOException - 如果發生 I/O 錯誤
從以下版本開始:
1.2

close

public void close()
           throws IOException
關閉此隨機存取檔案串流並釋放與該串流關聯的所有系統資源。關閉的隨機存取檔案不能執行輸入或輸出操作,而且不能重新打開。

如果此檔案具有一個關聯的通道,那麼該通道也會被關閉。

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

readBoolean

public final boolean readBoolean()
                          throws IOException
從此檔案讀取一個 boolean。此方法從該檔案的當前檔案指針開始讀取單個位元組。值 0 表示 false。其他任何值表示 true。在讀取了該位元組、檢測到串流的末尾或者拋出異常前,此方法一直阻塞。

指定者:
介面 DataInput 中的 readBoolean
返回:
讀取的 boolean 值。
拋出:
EOFException - 如果此檔案已到達末尾。
IOException - 如果發生 I/O 錯誤。

readByte

public final byte readByte()
                    throws IOException
從此檔案讀取一個有符號的八位值。此方法從該檔案的當前檔案指針開始讀取一個位元組。如果讀取的位元組為 b,其中 0 <= b <= 255,則結果將是:
(byte)(b)
 

在讀取了該位元組、檢測到串流的末尾或者拋出異常前,此方法一直阻塞。

指定者:
介面 DataInput 中的 readByte
返回:
以有符號的八位 byte 形式返回此檔案的下一個位元組。
拋出:
EOFException - 如果此檔案已到達末尾。
IOException - 如果發生 I/O 錯誤。

readUnsignedByte

public final int readUnsignedByte()
                           throws IOException
從此檔案讀取一個無符號的八位數。此方法從此檔案的當前檔案指針開始讀取一個位元組,並返回該位元組。

在讀取了該位元組、檢測到串流的末尾或者拋出異常前,此方法一直阻塞。

指定者:
介面 DataInput 中的 readUnsignedByte
返回:
此檔案的下一個位元組,解釋為一個無符號的八位數。
拋出:
EOFException - 如果此檔案已到達末尾。
IOException - 如果發生 I/O 錯誤。

readShort

public final short readShort()
                      throws IOException
從此檔案讀取一個有符號的 16 位數。此方法從此檔案的當前檔案指針開始讀取兩個位元組。如果按順序讀取的兩個位元組為 b1b2,其中兩個值都在 0255之間(包含),則此結果等於:
(short)((b1 << 8) | b2)
 

在讀取了這兩個位元組、檢測到串流的末尾或者拋出異常前,此方法一直阻塞。

指定者:
介面 DataInput 中的 readShort
返回:
此檔案的下兩個位元組,解釋為一個有符號的 16 位數。
拋出:
EOFException - 如果在讀取兩個位元組之前此檔案已到達末尾。
IOException - 如果發生 I/O 錯誤。

readUnsignedShort

public final int readUnsignedShort()
                            throws IOException
從此檔案讀取一個無符號的 16 位數。此方法從該檔案的當前檔案指針開始讀取兩個位元組。如果按順序讀取的位元組為 b1b2,其中 0 <= b1, b2 <= 255,則結果將等於:
(b1 << 8) | b2
 

在讀取了這兩個位元組、檢測到串流的末尾或者拋出異常前,此方法一直阻塞。

指定者:
介面 DataInput 中的 readUnsignedShort
返回:
此檔案的下兩個位元組,解釋為一個無符號的 16 位整數。
拋出:
EOFException - 如果在讀取兩個位元組之前此檔案已到達末尾。
IOException - 如果發生 I/O 錯誤。

readChar

public final char readChar()
                    throws IOException
從此檔案讀取一個字元。此方法從該檔案的當前檔案指針開始讀取兩個位元組。如果按順序讀取的位元組為 b1b2,其中 0 <= b1, b2 <= 255,則結果將等於:
(char)((b1 << 8) | b2)
 

在讀取了這兩個位元組、檢測到串流的末尾或者拋出異常前,此方法一直阻塞。

指定者:
介面 DataInput 中的 readChar
返回:
此檔案的下兩個位元組,解釋為 char
拋出:
EOFException - 如果在讀取兩個位元組之前此檔案已到達末尾。
IOException - 如果發生 I/O 錯誤。

readInt

public final int readInt()
                  throws IOException
從此檔案讀取一個有符號的 32 位整數。此方法從該檔案的當前檔案指針開始讀取 4 個位元組。如果按順序讀取的位元組為 b1b2b3b4,其中 0 <= b1, b2, b3, b4 <= 255,則結果將等於:
(b1 << 24) | (b2 << 16) + (b3 << 8) + b4
 

在讀取了這四個位元組、檢測到串流的末尾或者拋出異常前,此方法一直阻塞。

指定者:
介面 DataInput 中的 readInt
返回:
此檔案的下四個位元組,解釋為一個 int
拋出:
EOFException - 如果在讀取四個位元組之前此檔案已到達末尾。
IOException - 如果發生 I/O 錯誤。

readLong

public final long readLong()
                    throws IOException
從此檔案讀取一個有符號的 64 位整數。此方法從該檔案的當前檔案指針開始讀取八個位元組。如果按順序讀取的位元組為 b1b2b3b4b5b6b7b8,其中:
0 <= b1, b2, b3, b4, b5, b6, b7, b8 <=255,
 

則結果將等於:

((long)b1 << 56) + ((long)b2 << 48)
+ ((long)b3 << 40) + ((long)b4 << 32)
     + ((long)b5 << 24) + ((long)b6 << 16)
     + ((long)b7 << 8) + b8
 

在讀取了這八個位元組、檢測到串流的末尾或者拋出異常前,此方法一直阻塞。

指定者:
介面 DataInput 中的 readLong
返回:
此檔案的下八個位元組,解釋為一個 long
拋出:
EOFException - 如果在讀取八個位元組之前此檔案已到達末尾。
IOException - 如果發生 I/O 錯誤。

readFloat

public final float readFloat()
                      throws IOException
從此檔案讀取一個 float。此方法從當前檔案指針開始讀取一個 int 值,類似於使用 readInt 方法,然後使用 Float 類別中的 intBitsToFloat 方法將該 int 轉換為一個 float

在讀取了這四個位元組、檢測到串流的末尾或者拋出異常前,此方法一直阻塞。

指定者:
介面 DataInput 中的 readFloat
返回:
此檔案的下四個位元組,解釋為一個 float
拋出:
EOFException - 如果在讀取四個位元組之前此檔案已到達末尾。
IOException - 如果發生 I/O 錯誤。
另請參見:
readInt(), Float.intBitsToFloat(int)

readDouble

public final double readDouble()
                        throws IOException
從此檔案讀取一個 double。此方法從當前檔案指針開始讀取一個 long 值,類似於使用 readLong 方法,然後使用 Double 類別中的 longBitsToDouble 方法將該 long 轉換為一個 double

在讀取了這八個位元組、檢測到串流的末尾或者拋出異常前,此方法一直阻塞。

指定者:
介面 DataInput 中的 readDouble
返回:
此檔案的下八個位元組,解釋為一個 double
拋出:
EOFException - 如果在讀取八個位元組之前此檔案已到達末尾。
IOException - 如果發生 I/O 錯誤。
另請參見:
readLong(), Double.longBitsToDouble(long)

readLine

public final String readLine()
                      throws IOException
從此檔案讀取文本的下一行。此方法可以從該檔案的當前檔案指針處成功地讀取位元組,直到到達行結束符或檔案的末尾。每個位元組都轉換為一個字元,方法是採用該字元的低八位位元組值,並將該字元的高八位設置為零。因此,此方法不支持完整的 Unicode 字元集。

文本行由回車(Enter)符 ('\r') 和一個換行符 ('\n') 結束,回車(Enter)符後面緊跟一個換行符,或者是檔案的末尾。不使用行結束符,並且在返回的字元串中不包括結束符。

在讀取了一個換行符、讀取了一個回車(Enter)符和它後面的位元組(查看是否為一個新行),到達檔案的末尾或者拋出異常之前,此方法一直阻塞。

指定者:
介面 DataInput 中的 readLine
返回:
此檔案文本的下一行,如果連一個位元組也沒有讀取就已到達檔案的末尾,則返回 null。
拋出:
IOException - 如果發生 I/O 錯誤。

readUTF

public final String readUTF()
                     throws IOException
從此檔案讀取一個字元串。該字元串已使用 UTF-8 修改版格式進行編碼。

從當前檔案指針開始讀取前兩個位元組,類似於使用 readUnsignedShort。此值給出已編碼字元串中隨後的位元組數,而不是結果字元串的長度。隨後的位元組然後解釋為 UTF-8 修改版格式的位元組編碼字元,並轉換為字元。

在讀取了所有位元組、檢測到串流的末尾或者拋出異常前,此方法一直阻塞。

指定者:
介面 DataInput 中的 readUTF
返回:
一個 Unicode 字元串。
拋出:
EOFException - 如果在讀取所有位元組之前此檔案已到達末尾。
IOException - 如果發生 I/O 錯誤。
UTFDataFormatException - 如果這些位元組不表示 Unicode 字元串的有效 UTF-8 修改版編碼。
另請參見:
readUnsignedShort()

writeBoolean

public final void writeBoolean(boolean v)
                        throws IOException
按單位元組值將 boolean 寫入該檔案。值 true 寫出為值 (byte)1;值 false 寫出為值 (byte)0。寫入從檔案指針的當前位置開始。

指定者:
介面 DataOutput 中的 writeBoolean
參數:
v - 要寫入的 boolean 值。
拋出:
IOException - 如果發生 I/O 錯誤。

writeByte

public final void writeByte(int v)
                     throws IOException
按單位元組值將 byte 寫入該檔案。寫入從檔案指針的當前位置開始。

指定者:
介面 DataOutput 中的 writeByte
參數:
v - 要寫入的 byte 值。
拋出:
IOException - 如果發生 I/O 錯誤。

writeShort

public final void writeShort(int v)
                      throws IOException
按兩個位元組將 short 寫入該檔案,先寫高位元組。寫入從檔案指針的當前位置開始。

指定者:
介面 DataOutput 中的 writeShort
參數:
v - 要寫入的 short
拋出:
IOException - 如果發生 I/O 錯誤。

writeChar

public final void writeChar(int v)
                     throws IOException
按雙位元組值將 char 寫入該檔案,先寫高位元組。寫入從檔案指針的當前位置開始。

指定者:
介面 DataOutput 中的 writeChar
參數:
v - 要寫入的 char 值。
拋出:
IOException - 如果發生 I/O 錯誤。

writeInt

public final void writeInt(int v)
                    throws IOException
按四個位元組將 int 寫入該檔案,先寫高位元組。寫入從檔案指針的當前位置開始。

指定者:
介面 DataOutput 中的 writeInt
參數:
v - 要寫入的 int
拋出:
IOException - 如果發生 I/O 錯誤。

writeLong

public final void writeLong(long v)
                     throws IOException
按八個位元組將 long 寫入該檔案,先寫高位元組。寫入從檔案指針的當前位置開始。

指定者:
介面 DataOutput 中的 writeLong
參數:
v - 要寫入的 long
拋出:
IOException - 如果發生 I/O 錯誤。

writeFloat

public final void writeFloat(float v)
                      throws IOException
使用 Float 類別中的 floatToIntBits 方法將浮點參數轉換為一個 int,然後按四位元組數量將該 int 值寫入該檔案,先寫高位元組。寫入從檔案指針的當前位置開始。

指定者:
介面 DataOutput 中的 writeFloat
參數:
v - 要寫入的 float 值。
拋出:
IOException - 如果發生 I/O 錯誤。
另請參見:
Float.floatToIntBits(float)

writeDouble

public final void writeDouble(double v)
                       throws IOException
使用 Double 類別中的 doubleToLongBits 方法將雙精度參數轉換為一個 long,然後按八位元組數量將該 long 值寫入該檔案,先定高位元組。寫入從檔案指針的當前位置開始。

指定者:
介面 DataOutput 中的 writeDouble
參數:
v - 要寫入的 double 值。
拋出:
IOException - 如果發生 I/O 錯誤。
另請參見:
Double.doubleToLongBits(double)

writeBytes

public final void writeBytes(String s)
                      throws IOException
按位元組序列將該字元串寫入該檔案。該字元串中的每個字元均按順序寫出,並丟棄其高八位。寫入從檔案指針的當前位置開始。

指定者:
介面 DataOutput 中的 writeBytes
參數:
s - 要寫入的位元組的字元串。
拋出:
IOException - 如果發生 I/O 錯誤。

writeChars

public final void writeChars(String s)
                      throws IOException
按字元序列將一個字元串寫入該檔案。每個字元均寫入資料輸出串流,類似於使用 writeChar 方法。寫入從檔案指針的當前位置開始。

指定者:
介面 DataOutput 中的 writeChars
參數:
s - 要寫入的 boolean 值。
拋出:
IOException - 如果發生 I/O 錯誤。
另請參見:
writeChar(int)

writeUTF

public final void writeUTF(String str)
                    throws IOException
使用 modified UTF-8 編碼以與機器無關的方式將一個字元串寫入該檔案。

首先,把兩個位元組從檔案的當前檔案指針寫入到此檔案,類似於使用 writeShort 方法並給定要跟隨的位元組數。此值是實際寫出的位元組數,而不是該字元串的長度。在該長度之後,按順序輸出該字元串的每個字元,並對每個字元使用 UTF-8 修改版編碼。

指定者:
介面 DataOutput 中的 writeUTF
參數:
str - 要寫入的字元串。
拋出:
IOException - 如果發生 I/O 錯誤。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only