鴻蒙OS RandomAccessFile

2022-10-25 14:40 更新

RandomAccessFile

java.lang.Object

|---java.io.RandomAccessFile

public class RandomAccessFile
extends Object
implements DataOutput, DataInput, Closeable

此類的實(shí)例支持讀取和寫入隨機(jī)訪問文件。隨機(jī)訪問文件的行為類似于存儲(chǔ)在文件系統(tǒng)中的大型字節(jié)數(shù)組。有一種游標(biāo),或隱含數(shù)組的索引,稱為文件指針;輸入操作從文件指針開始讀取字節(jié),并將文件指針推進(jìn)超過讀取的字節(jié)。如果隨機(jī)存取文件是以讀/寫模式創(chuàng)建的,那么輸出操作也是可用的;輸出操作從文件指針開始寫入字節(jié),并將文件指針前進(jìn)到寫入的字節(jié)。寫入隱含數(shù)組當(dāng)前末尾的輸出操作會(huì)導(dǎo)致數(shù)組被擴(kuò)展。文件指針可以通過 getFilePointer 方法讀取并通過 seek 方法設(shè)置。

對(duì)于此類中的所有讀取例程,通常情況下,如果在讀取所需的字節(jié)數(shù)之前到達(dá)文件結(jié)尾,則會(huì)拋出 EOFException(這是一種 IOException)。如果由于文件結(jié)尾以外的任何原因無法讀取任何字節(jié),則會(huì)引發(fā)除 EOFException 之外的 IOException。特別是,如果流已關(guān)閉,則可能會(huì)引發(fā) IOException。

Since:

JDK1.0

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
RandomAccessFile(File file, String mode) 創(chuàng)建一個(gè)隨機(jī)訪問文件流,以讀取和寫入由 File 參數(shù)指定的文件。
RandomAccessFile(String name, String mode) 創(chuàng)建一個(gè)隨機(jī)訪問文件流,以讀取和寫入具有指定名稱的文件。

方法總結(jié)

修飾符和類型 方法 描述
void close() 關(guān)閉此隨機(jī)訪問文件流并釋放與該流關(guān)聯(lián)的所有系統(tǒng)資源。
FileChannel getChannel() 返回與此文件關(guān)聯(lián)的唯一 FileChannel 對(duì)象。
FileDescriptor getFD() 返回與此流關(guān)聯(lián)的不透明文件描述符對(duì)象。
long getFilePointer() 返回此文件中的當(dāng)前偏移量。
long length() 返回此文件的長(zhǎng)度。
int read() 從此文件中讀取一個(gè)字節(jié)的數(shù)據(jù)。
int read(byte[] b) 從此文件中讀取最多 b.length 個(gè)字節(jié)的數(shù)據(jù)到字節(jié)數(shù)組中。
int read(byte[] b, int off, int len) 從此文件中讀取最多 len 個(gè)字節(jié)的數(shù)據(jù)到一個(gè)字節(jié)數(shù)組中。
boolean readBoolean() 從此文件中讀取一個(gè)布爾值。
byte readByte() 從此文件中讀取一個(gè)有符號(hào)的 8 位值。
char readChar() 從此文件中讀取一個(gè)字符。
double readDouble() 從此文件中讀取一個(gè) double。
float readFloat() 從此文件中讀取一個(gè)浮點(diǎn)數(shù)。
void readFully(byte[] b) 從此文件中讀取 b.length 個(gè)字節(jié)到字節(jié)數(shù)組中,從當(dāng)前文件指針開始。
void readFully(byte[] b, int off, int len) 從當(dāng)前文件指針開始,從該文件準(zhǔn)確讀取 len 個(gè)字節(jié)到字節(jié)數(shù)組中。
int readInt() 從此文件中讀取一個(gè)帶符號(hào)的 32 位整數(shù)。
String readLine() 從此文件中讀取下一行文本。
long readLong() 從此文件中讀取一個(gè)帶符號(hào)的 64 位整數(shù)。
short readShort() 從此文件中讀取一個(gè)帶符號(hào)的 16 位數(shù)字。
int readUnsignedByte() 從此文件中讀取一個(gè)無符號(hào)八位數(shù)。
int readUnsignedShort() 從此文件中讀取一個(gè)無符號(hào)的 16 位數(shù)字。
String readUTF() 從此文件中讀取字符串。
void seek(long pos) 設(shè)置文件指針偏移量,從該文件的開頭開始測(cè)量,下一次讀取或?qū)懭氚l(fā)生在該位置。
void setLength(long newLength) 設(shè)置此文件的長(zhǎng)度。
int skipBytes(int n) 嘗試跳過 n 個(gè)字節(jié)的輸入丟棄跳過的字節(jié)。
void write(byte[] b) 將指定字節(jié)數(shù)組中的 b.length 個(gè)字節(jié)寫入此文件,從當(dāng)前文件指針開始。
void write(byte[] b, int off, int len) 從偏移量 off 開始的指定字節(jié)數(shù)組中寫入 len 個(gè)字節(jié)到此文件。
void write(int b) 將指定的字節(jié)寫入此文件。
void writeBoolean(boolean v) 將布爾值作為單字節(jié)值寫入文件。
void writeByte(int v) 將一個(gè)字節(jié)作為單字節(jié)值寫入文件。
void writeBytes(String s) 將字符串作為字節(jié)序列寫入文件。
void writeChar(int v) 將 char 作為兩字節(jié)值寫入文件,先是高字節(jié)。
void writeChars(String s) 將字符串作為字符序列寫入文件。
void writeDouble(double v) 使用 Double 類中的 doubleToLongBits 方法將 double 參數(shù)轉(zhuǎn)換為 long,然后將該 long 值作為 8 字節(jié)數(shù)量寫入文件,先是高字節(jié)。
void writeFloat(float v) 使用 Float 類中的 floatToIntBits 方法將 float 參數(shù)轉(zhuǎn)換為 int,然后將該 int 值作為四字節(jié)數(shù)量寫入文件,先是高字節(jié)。
void writeInt(int v) 將 int 作為四個(gè)字節(jié)寫入文件,先是高字節(jié)。
void writeLong(long v) 將 long 作為 8 個(gè)字節(jié)寫入文件,先是高字節(jié)。
void writeShort(int v) 以兩個(gè)字節(jié)的形式向文件寫入一個(gè)short,首先是高字節(jié)。
void writeUTF(String str) 以與機(jī)器無關(guān)的方式使用修改后的 UTF-8 編碼將字符串寫入文件。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

構(gòu)造函數(shù)詳細(xì)信息

RandomAccessFile

public RandomAccessFile(String name, String mode) throws FileNotFoundException

創(chuàng)建一個(gè)隨機(jī)訪問文件流,以讀取和寫入具有指定名稱的文件。 創(chuàng)建一個(gè)新的 FileDescriptor 對(duì)象來表示與文件的連接。

mode 參數(shù)指定打開文件的訪問模式。 允許的值及其含義與為 RandomAccessFile(File,String) 構(gòu)造函數(shù)指定的一樣。

如果有安全管理器,則調(diào)用其 checkRead 方法,并使用 name 參數(shù)作為其參數(shù),以查看是否允許對(duì)文件進(jìn)行讀取訪問。 如果該模式允許寫入,則還調(diào)用安全管理器的 checkWrite 方法,并將 name 參數(shù)作為其參數(shù),以查看是否允許對(duì)文件進(jìn)行寫入訪問。

參數(shù):

參數(shù)名稱 參數(shù)描述
name 系統(tǒng)相關(guān)的文件名
mode 訪問模式

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果模式參數(shù)不等于“r”、“rw”、“rws”或“rwd”之一
FileNotFoundException 如果模式為“r”但給定的字符串不表示現(xiàn)有的常規(guī)文件,或者如果模式以“rw”開頭但給定的字符串不表示現(xiàn)有的可寫常規(guī)文件并且該名稱的新常規(guī)文件不能 被創(chuàng)建,或者在打開或創(chuàng)建文件時(shí)發(fā)生其他錯(cuò)誤
SecurityException 如果安全管理器存在且其 checkRead 方法拒絕對(duì)文件的讀訪問或模式為“rw”且安全管理器的 checkWrite 方法拒絕對(duì)文件的寫訪問

RandomAccessFile

public RandomAccessFile(File file, String mode) throws FileNotFoundException

創(chuàng)建一個(gè)隨機(jī)訪問文件流,以讀取和寫入由 File 參數(shù)指定的文件。創(chuàng)建一個(gè)新的 FileDescriptor 對(duì)象來表示此文件連接。

mode 參數(shù)指定打開文件的訪問模式。允許的值及其含義是:

“rws”和“rwd”模式的工作方式很像 FileChannel 類的 force(boolean) 方法,分別傳遞 true 和 false 的參數(shù),除了它們總是適用于每個(gè) I/O 操作,因此通常更有效。如果文件駐留在本地存儲(chǔ)設(shè)備上,則當(dāng)調(diào)用此類的方法返回時(shí),可以保證該調(diào)用對(duì)文件所做的所有更改都已寫入該設(shè)備。這對(duì)于確保在系統(tǒng)崩潰時(shí)不會(huì)丟失關(guān)鍵信息很有用。如果文件不駐留在本地設(shè)備上,則不會(huì)做出此類保證。

“rwd”模式可用于減少執(zhí)行的 I/O 操作的數(shù)量。使用“rwd”只需要更新要寫入存儲(chǔ)的文件內(nèi)容;使用“rws”需要更新文件的內(nèi)容和要寫入的元數(shù)據(jù),這通常需要至少一個(gè)低級(jí) I/O 操作。

如果有安全管理器,則調(diào)用其 checkRead 方法,并以文件參數(shù)的路徑名作為其參數(shù),以查看是否允許對(duì)文件進(jìn)行讀取訪問。如果該模式允許寫入,還使用路徑參數(shù)調(diào)用安全管理器的 checkWrite 方法,以查看是否允許對(duì)文件進(jìn)行寫入訪問。

參數(shù):

參數(shù)名稱 參數(shù)描述
file 文件對(duì)象
mode 訪問模式,如上所述

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果模式參數(shù)不等于“r”、“rw”、“rws”或“rwd”之一
FileNotFoundException 如果模式為“r”但給定的文件對(duì)象不表示現(xiàn)有的常規(guī)文件,或者如果模式以“rw”開頭但給定的文件對(duì)象不表示現(xiàn)有的可寫常規(guī)文件和該文件的新常規(guī)文件 無法創(chuàng)建名稱,或者在打開或創(chuàng)建文件時(shí)出現(xiàn)其他錯(cuò)誤
SecurityException 如果安全管理器存在且其 checkRead 方法拒絕對(duì)文件的讀訪問或模式為“rw”且安全管理器的 checkWrite 方法拒絕對(duì)文件的寫訪問

方法詳情

getFD

public final FileDescriptor getFD() throws IOException

返回與此流關(guān)聯(lián)的不透明文件描述符對(duì)象。

返回:

與此流關(guān)聯(lián)的文件描述符對(duì)象。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

getChannel

public final FileChannel getChannel()

返回與此文件關(guān)聯(lián)的唯一 FileChannel 對(duì)象。

返回通道的位置將始終等于 getFilePointer 方法返回的該對(duì)象的文件指針偏移量。 更改此對(duì)象的文件指針偏移量,無論是顯式地還是通過讀取或?qū)懭胱止?jié),都會(huì)改變通道的位置,反之亦然。 通過此對(duì)象更改文件的長(zhǎng)度將更改通過文件通道看到的長(zhǎng)度,反之亦然。

返回:

與此文件關(guān)聯(lián)的文件通道

Since:

1.4

read

public int read() throws IOException

從此文件中讀取一個(gè)字節(jié)的數(shù)據(jù)。 該字節(jié)以 0 到 255 (0x00-0x0ff) 范圍內(nèi)的整數(shù)形式返回。 如果還沒有輸入可用,則此方法會(huì)阻塞。

盡管 RandomAccessFile 不是 InputStream 的子類,但此方法的行為方式與 InputStream 的 InputStream#read() 方法完全相同。

返回:

數(shù)據(jù)的下一個(gè)字節(jié),如果已到達(dá)文件末尾,則為 -1。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。 如果已到達(dá)文件結(jié)尾,則不拋出。

read

public int read(byte[] b, int off, int len) throws IOException

從此文件中讀取最多 len 個(gè)字節(jié)的數(shù)據(jù)到一個(gè)字節(jié)數(shù)組中。 此方法會(huì)阻塞,直到至少有一個(gè)字節(jié)的輸入可用。

盡管 RandomAccessFile 不是 InputStream 的子類,但此方法的行為方式與 InputStream 的 [InputStream#read(byte], int, int) 方法完全相同。

參數(shù):

參數(shù)名稱 參數(shù)描述
b 讀取數(shù)據(jù)的緩沖區(qū)。
off 數(shù)組 b 中寫入數(shù)據(jù)的起始偏移量。
len 讀取的最大字節(jié)數(shù)。

返回:

讀入緩沖區(qū)的總字節(jié)數(shù),如果由于已到達(dá)文件末尾而沒有更多數(shù)據(jù),則為 -1。

Throws:

Throw名稱 Throw描述
IOException 如果由于文件結(jié)尾以外的任何原因無法讀取第一個(gè)字節(jié),或者隨機(jī)訪問文件已關(guān)閉,或者發(fā)生其他一些 I/O 錯(cuò)誤。
NullPointerException 如果 b 為空。
IndexOutOfBoundsException 如果 off 為負(fù)數(shù),len 為負(fù)數(shù),或者 len 大于 b.length - off

read

public int read(byte[] b) throws IOException

從此文件中讀取最多 b.length 個(gè)字節(jié)的數(shù)據(jù)到字節(jié)數(shù)組中。 此方法會(huì)阻塞,直到至少有一個(gè)字節(jié)的輸入可用。

盡管 RandomAccessFile 不是 InputStream 的子類,但此方法的行為方式與 InputStream 的 [InputStream#read(byte]) 方法完全相同。

參數(shù):

參數(shù)名稱 參數(shù)描述
b 讀取數(shù)據(jù)的緩沖區(qū)。

返回:

讀入緩沖區(qū)的總字節(jié)數(shù),如果由于已到達(dá)此文件的末尾而沒有更多數(shù)據(jù),則為 -1。

Throws:

Throw名稱 Throw描述
IOException 如果由于文件結(jié)尾以外的任何原因無法讀取第一個(gè)字節(jié),或者隨機(jī)訪問文件已關(guān)閉,或者發(fā)生其他一些 I/O 錯(cuò)誤。
NullPointerException 如果 b 為空。

readFully

public final void readFully(byte[] b) throws IOException

從此文件中讀取 b.length 個(gè)字節(jié)到字節(jié)數(shù)組中,從當(dāng)前文件指針開始。 此方法從文件中重復(fù)讀取,直到讀取請(qǐng)求的字節(jié)數(shù)。 此方法會(huì)一直阻塞,直到讀取到請(qǐng)求的字節(jié)數(shù)、檢測(cè)到流的結(jié)尾或引發(fā)異常。

指定者:

接口 DataInput 中的 readFully

參數(shù):

參數(shù)名稱 參數(shù)描述
b 讀取數(shù)據(jù)的緩沖區(qū)。

Throws:

Throw名稱 Throw描述
EOFException 如果此文件在讀取所有字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readFully

public final void readFully(byte[] b, int off, int len) throws IOException

從當(dāng)前文件指針開始,從該文件準(zhǔn)確讀取 len 個(gè)字節(jié)到字節(jié)數(shù)組中。 此方法從文件中重復(fù)讀取,直到讀取請(qǐng)求的字節(jié)數(shù)。 此方法會(huì)一直阻塞,直到讀取到請(qǐng)求的字節(jié)數(shù)、檢測(cè)到流的結(jié)尾或引發(fā)異常。

指定者:

接口 DataInput 中的 readFully

參數(shù):

參數(shù)名稱 參數(shù)描述
b 讀取數(shù)據(jù)的緩沖區(qū)。
off 數(shù)據(jù)的起始偏移量。
len 要讀取的字節(jié)數(shù)。

Throws:

Throw名稱 Throw描述
EOFException 如果此文件在讀取所有字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

skipBytes

public int skipBytes(int n) throws IOException

嘗試跳過 n 個(gè)字節(jié)的輸入丟棄跳過的字節(jié)。

此方法可能會(huì)跳過一些較小的字節(jié)數(shù),可能為零。 這可能是由多種情況中的任何一種造成的; 在跳過 n 個(gè)字節(jié)之前到達(dá)文件末尾只是一種可能性。 此方法從不拋出 EOFException。 返回實(shí)際跳過的字節(jié)數(shù)。 如果 n 為負(fù)數(shù),則不跳過任何字節(jié)。

指定者:

接口 DataInput 中的 skipBytes

參數(shù):

參數(shù)名稱 參數(shù)描述
n 要跳過的字節(jié)數(shù)。

返回:

跳過的實(shí)際字節(jié)數(shù)。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

write

public void write(int b) throws IOException

將指定的字節(jié)寫入此文件。 寫入從當(dāng)前文件指針開始。

指定者:

寫入接口DataOutput

參數(shù):

參數(shù)名稱 參數(shù)描述
b 要寫入的字節(jié)。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

write

public void write(byte[] b) throws IOException

將指定字節(jié)數(shù)組中的 b.length 個(gè)字節(jié)寫入此文件,從當(dāng)前文件指針開始。

指定者:

寫入接口DataOutput

參數(shù):

參數(shù)名稱 參數(shù)描述
b 數(shù)據(jù)。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

write

public void write(byte[] b, int off, int len) throws IOException

從偏移量 off 開始的指定字節(jié)數(shù)組中寫入 len 個(gè)字節(jié)到此文件。

指定者:

寫入接口DataOutput

參數(shù):

參數(shù)名稱 參數(shù)描述
b 數(shù)據(jù)。
off 數(shù)據(jù)中的起始偏移量。
len 要寫入的字節(jié)數(shù)。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

getFilePointer

public long getFilePointer() throws IOException

返回此文件中的當(dāng)前偏移量。

返回:

從文件開頭的偏移量,以字節(jié)為單位,發(fā)生下一次讀取或?qū)懭搿?/p>

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

seek

public void seek(long pos) throws IOException

設(shè)置文件指針偏移量,從該文件的開頭開始測(cè)量,下一次讀取或?qū)懭氚l(fā)生在該位置。 偏移量可以設(shè)置在文件末尾之外。 設(shè)置超出文件末尾的偏移量不會(huì)更改文件長(zhǎng)度。 只有在將偏移量設(shè)置到文件末尾之后,文件長(zhǎng)度才會(huì)改變。

參數(shù):

參數(shù)名稱 參數(shù)描述
pos 偏移位置,以從文件開頭開始的字節(jié)為單位,設(shè)置文件指針的位置。

Throws:

Throw名稱 Throw描述
IOException 如果 pos 小于 0 或發(fā)生 I/O 錯(cuò)誤。

length

public long length() throws IOException

返回此文件的長(zhǎng)度。

返回:

此文件的長(zhǎng)度,以字節(jié)為單位。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

setLength

public void setLength(long newLength) throws IOException

設(shè)置此文件的長(zhǎng)度。

如果 length 方法返回的文件的當(dāng)前長(zhǎng)度大于 newLength 參數(shù),則文件將被截?cái)唷?在這種情況下,如果 getFilePointer 方法返回的文件偏移量大于 newLength,則在此方法返回后,偏移量將等于 newLength。

如果 length 方法返回的文件的當(dāng)前長(zhǎng)度小于 newLength 參數(shù),則文件將被擴(kuò)展。 在這種情況下,未定義文件擴(kuò)展部分的內(nèi)容。

參數(shù):

參數(shù)名稱 參數(shù)描述
newLength 所需的文件長(zhǎng)度

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤

Since:

1.2

close

public void close() throws IOException

關(guān)閉此隨機(jī)訪問文件流并釋放與該流關(guān)聯(lián)的所有系統(tǒng)資源。 關(guān)閉的隨機(jī)存取文件無法執(zhí)行輸入或輸出操作,也無法重新打開。

如果此文件具有關(guān)聯(lián)的通道,則該通道也將關(guān)閉。

指定者:

在接口 AutoCloseable 中關(guān)閉

指定者:

在接口Closeable中關(guān)閉

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readBoolean

public final boolean readBoolean() throws IOException

從此文件中讀取一個(gè)布爾值。 此方法從文件中讀取單個(gè)字節(jié),從當(dāng)前文件指針開始。 值 0 表示假。 任何其他值都表示真。 此方法一直阻塞,直到讀取字節(jié)、檢測(cè)到流的結(jié)尾或引發(fā)異常。

指定者:

接口 DataInput 中的 readBoolean

返回:

讀取的布爾值。

Throws:

Throw名稱 Throw描述
EOFException 如果這個(gè)文件已經(jīng)結(jié)束。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readByte

public final byte readByte() throws IOException

從此文件中讀取一個(gè)有符號(hào)的 8 位值。 此方法從文件中讀取一個(gè)字節(jié),從當(dāng)前文件指針開始。 如果讀取的字節(jié)為 b,其中 0 <= b <= 255,則結(jié)果為:

     (byte)(b) 

此方法一直阻塞,直到讀取字節(jié)、檢測(cè)到流的結(jié)尾或引發(fā)異常。

指定者:

接口 DataInput 中的 readByte

返回:

此文件的下一個(gè)字節(jié)為有符號(hào)的 8 位字節(jié)。

Throws:

Throw名稱 Throw描述
EOFException 如果這個(gè)文件已經(jīng)結(jié)束。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readUnsignedByte

public final int readUnsignedByte() throws IOException

從此文件中讀取一個(gè)無符號(hào)八位數(shù)。 此方法從該文件中讀取一個(gè)字節(jié),從當(dāng)前文件指針開始,并返回該字節(jié)。

此方法一直阻塞,直到讀取字節(jié)、檢測(cè)到流的結(jié)尾或引發(fā)異常。

指定者:

接口 DataInput 中的 readUnsignedByte

返回:

此文件的下一個(gè)字節(jié),解釋為無符號(hào)八位數(shù)。

Throws:

Throw名稱 Throw描述
EOFException 如果這個(gè)文件已經(jīng)結(jié)束。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readShort

public final short readShort() throws IOException

從此文件中讀取一個(gè)帶符號(hào)的 16 位數(shù)字。 該方法從該文件中讀取兩個(gè)字節(jié),從當(dāng)前文件指針開始。 如果按順序讀取的兩個(gè)字節(jié)是 b1 和 b2,其中兩個(gè)值中的每一個(gè)都介于 0 和 255 之間,包括 0 和 255,則結(jié)果等于:

     (short)((b1 << 8) | b2) 

此方法一直阻塞,直到讀取了兩個(gè)字節(jié)、檢測(cè)到流結(jié)束或拋出異常。

指定者:

接口 DataInput 中的 readShort

返回:

該文件的下兩個(gè)字節(jié),解釋為帶符號(hào)的 16 位數(shù)字。

Throws:

Throw名稱 Throw描述
EOFException 如果此文件在讀取兩個(gè)字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readUnsignedShort

public final int readUnsignedShort() throws IOException

從此文件中讀取一個(gè)無符號(hào)的 16 位數(shù)字。 此方法從文件中讀取兩個(gè)字節(jié),從當(dāng)前文件指針開始。 如果按順序讀取的字節(jié)是 b1 和 b2,其中 0 <= b1,b2 <= 255,則結(jié)果等于:

     (b1 << 8) | b2 

此方法一直阻塞,直到讀取了兩個(gè)字節(jié)、檢測(cè)到流結(jié)束或拋出異常。

指定者:

接口 DataInput 中的 readUnsignedShort

返回:

此文件的下兩個(gè)字節(jié),解釋為無符號(hào) 16 位整數(shù)。

Throws:

Throw名稱 Throw描述
EOFException 如果此文件在讀取兩個(gè)字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readChar

public final char readChar() throws IOException

從此文件中讀取一個(gè)字符。 此方法從文件中讀取兩個(gè)字節(jié),從當(dāng)前文件指針開始。 如果按順序讀取的字節(jié)是 b1 和 b2,其中 0 <= b1,b2 <= 255,則結(jié)果等于:

     (char)((b1 << 8) | b2) 

此方法一直阻塞,直到讀取了兩個(gè)字節(jié)、檢測(cè)到流結(jié)束或拋出異常。

指定者:

接口 DataInput 中的 readChar

返回:

該文件的下兩個(gè)字節(jié),解釋為一個(gè)字符。

Throws:

Throw名稱 Throw描述
EOFException 如果此文件在讀取兩個(gè)字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readInt

public final int readInt() throws IOException

從此文件中讀取一個(gè)帶符號(hào)的 32 位整數(shù)。 此方法從文件中讀取 4 個(gè)字節(jié),從當(dāng)前文件指針開始。 如果按順序讀取的字節(jié)是 b1、b2、b3 和 b4,其中 0 <= b1、b2、b3、b4 <= 255,則結(jié)果等于:

     (b1 << 24) | (b2 << 16) + (b3 << 8) + b4 

此方法一直阻塞,直到讀取了四個(gè)字節(jié)、檢測(cè)到流的結(jié)尾或拋出異常。

指定者:

接口 DataInput 中的 readInt

返回:

此文件的下四個(gè)字節(jié),解釋為 int。

Throws:

Throw名稱 Throw描述
EOFException 如果此文件在讀取四個(gè)字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readLong

public final long readLong() throws IOException

從此文件中讀取一個(gè)帶符號(hào)的 64 位整數(shù)。 此方法從文件中讀取八個(gè)字節(jié),從當(dāng)前文件指針開始。 如果按順序讀取的字節(jié)是 b1、b2、b3、b4、b5、b6、b7 和 b8,其中:

     0 <= b1, b2, b3, b4, b5, b6, b7, b8 <=255, 

那么結(jié)果等于:

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

此方法一直阻塞,直到讀取了 8 個(gè)字節(jié)、檢測(cè)到流結(jié)束或引發(fā)異常。

指定者:

接口 DataInput 中的 readLong

返回:

該文件的接下來的 8 個(gè)字節(jié),解釋為 long。

Throws:

Throw名稱 Throw描述
EOFException 如果此文件在讀取八個(gè)字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readFloat

public final float readFloat() throws IOException

從此文件中讀取一個(gè)浮點(diǎn)數(shù)。 此方法從當(dāng)前文件指針開始讀取一個(gè) int 值,就像通過 readInt 方法一樣,然后使用 Float 類中的 intBitsToFloat 方法將該 int 轉(zhuǎn)換為浮點(diǎn)數(shù)。

此方法一直阻塞,直到讀取了四個(gè)字節(jié)、檢測(cè)到流的結(jié)尾或拋出異常。

指定者:

接口 DataInput 中的 readFloat

返回:

此文件的下四個(gè)字節(jié),解釋為浮點(diǎn)數(shù)。

Throws:

Throw名稱 Throw描述
EOFException 如果此文件在讀取四個(gè)字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readDouble

public final double readDouble() throws IOException

從此文件中讀取一個(gè) double。 此方法從當(dāng)前文件指針開始讀取一個(gè) long 值,就像通過 readLong 方法一樣,然后使用 Double 類中的 longBitsToDouble 方法將該 long 轉(zhuǎn)換為 double。

此方法一直阻塞,直到讀取了 8 個(gè)字節(jié)、檢測(cè)到流結(jié)束或引發(fā)異常。

指定者:

接口 DataInput 中的 readDouble

返回:

此文件的下八個(gè)字節(jié),解釋為雙精度。

Throws:

Throw名稱 Throw描述
EOFException 如果此文件在讀取八個(gè)字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readLine

public final String readLine() throws IOException

從此文件中讀取下一行文本。此方法從文件中連續(xù)讀取字節(jié),從當(dāng)前文件指針開始,直到到達(dá)行終止符或文件末尾。通過獲取字符低八位的字節(jié)值并將字符的高八位設(shè)置為零,將每個(gè)字節(jié)轉(zhuǎn)換為字符。因此,此方法不支持完整的 Unicode 字符集。

一行文本由回車符 ('\r')、換行符 ('\n')、緊跟換行符的回車符或文件結(jié)尾終止。行終止字符被丟棄,并且不包含在返回的字符串中。

此方法阻塞,直到讀取換行符、讀取回車符和其后的字節(jié)(以查看是否為換行符)、到達(dá)文件末尾或引發(fā)異常。

指定者:

接口 DataInput 中的 readLine

返回:

此文件中的下一行文本,如果在讀取一個(gè)字節(jié)之前遇到文件結(jié)尾,則為 null。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readUTF

public final String readUTF() throws IOException

從此文件中讀取字符串。 該字符串已使用修改后的 UTF-8 格式進(jìn)行編碼。

從當(dāng)前文件指針開始讀取前兩個(gè)字節(jié),就像通過 readUnsignedShort 一樣。 該值給出了編碼字符串中的后續(xù)字節(jié)數(shù),而不是結(jié)果字符串的長(zhǎng)度。 隨后的字節(jié)被解釋為字節(jié)編碼字符在修改的 UTF-8 格式,并被轉(zhuǎn)換成字符。

此方法阻塞,直到讀取所有字節(jié)、檢測(cè)到流的結(jié)尾或引發(fā)異常。

指定者:

接口 DataInput 中的 readUTF

返回:

一個(gè) Unicode 字符串。

Throws:

Throw名稱 Throw描述
EOFException 如果此文件在讀取所有字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。
UTFDataFormatException 如果字節(jié)不代表 Unicode 字符串的有效修改 UTF-8 編碼。

writeBoolean

public final void writeBoolean(boolean v) throws IOException

將布爾值作為單字節(jié)值寫入文件。 值 true 被寫為值(字節(jié))1; 值 false 被寫為值(字節(jié))0。 寫入從文件指針的當(dāng)前位置開始。

指定者:

接口 DataOutput 中的 writeBoolean

參數(shù):

參數(shù)名稱 參數(shù)描述
v 要寫入的布爾值。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

writeByte

public final void writeByte(int v) throws IOException

將一個(gè)字節(jié)作為單字節(jié)值寫入文件。 寫入從文件指針的當(dāng)前位置開始。

指定者:

接口 DataOutput 中的 writeByte

參數(shù):

參數(shù)名稱 參數(shù)描述
v 要寫入的字節(jié)值。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

writeShort

public final void writeShort(int v) throws IOException

以兩個(gè)字節(jié)的形式向文件寫入一個(gè)short,首先是高字節(jié)。 寫入從文件指針的當(dāng)前位置開始。

指定者:

接口 DataOutput 中的 writeShort

參數(shù):

參數(shù)名稱 參數(shù)描述
v 要寫入的 short 值。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

writeChar

public final void writeChar(int v) throws IOException

將 char 作為兩字節(jié)值寫入文件,先是高字節(jié)。 寫入從文件指針的當(dāng)前位置開始。

指定者:

接口 DataOutput 中的 writeChar

參數(shù):

參數(shù)名稱 參數(shù)描述
v 要寫入的 char 值。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

writeInt

public final void writeInt(int v) throws IOException

將 int 作為四個(gè)字節(jié)寫入文件,先是高字節(jié)。 寫入從文件指針的當(dāng)前位置開始。

指定者:

接口 DataOutput 中的 writeInt

參數(shù):

參數(shù)名稱 參數(shù)描述
v 要寫入的 int。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

writeLong

public final void writeLong(long v) throws IOException

將 long 作為 8 個(gè)字節(jié)寫入文件,先是高字節(jié)。 寫入從文件指針的當(dāng)前位置開始。

指定者:

接口 DataOutput 中的 writeLong

參數(shù):

參數(shù)名稱 參數(shù)描述
v 要寫入的 long 值。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

writeFloat

public final void writeFloat(float v) throws IOException

使用 Float 類中的 floatToIntBits 方法將 float 參數(shù)轉(zhuǎn)換為 int,然后將該 int 值作為四字節(jié)數(shù)量寫入文件,先是高字節(jié)。 寫入從文件指針的當(dāng)前位置開始。

指定者:

接口 DataOutput 中的 writeFloat

參數(shù):

參數(shù)名稱 參數(shù)描述
v 要寫入的浮點(diǎn)值。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

writeDouble

public final void writeDouble(double v) throws IOException

使用 Double 類中的 doubleToLongBits 方法將 double 參數(shù)轉(zhuǎn)換為 long,然后將該 long 值作為 8 字節(jié)數(shù)量寫入文件,先是高字節(jié)。 寫入從文件指針的當(dāng)前位置開始。

指定者:

接口 DataOutput 中的 writeDouble

參數(shù):

參數(shù)名稱 參數(shù)描述
v 要寫入的 double 值。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

writeBytes

public final void writeBytes(String s) throws IOException

將字符串作為字節(jié)序列寫入文件。 字符串中的每個(gè)字符通過丟棄其高八位按順序?qū)懗觥?寫入從文件指針的當(dāng)前位置開始。

指定者:

接口 DataOutput 中的 writeBytes

參數(shù):

參數(shù)名稱 參數(shù)描述
s 要寫入的字節(jié)串。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

writeChars

public final void writeChars(String s) throws IOException

將字符串作為字符序列寫入文件。 每個(gè)字符都被寫入數(shù)據(jù)輸出流,就像通過 writeChar 方法一樣。 寫入從文件指針的當(dāng)前位置開始。

指定者:

接口 DataOutput 中的 writeChars

參數(shù):

參數(shù)名稱 參數(shù)描述
s 要寫入的字符串值。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。

writeUTF

public final void writeUTF(String str) throws IOException

以與機(jī)器無關(guān)的方式使用修改后的 UTF-8 編碼將字符串寫入文件。

首先,將兩個(gè)字節(jié)寫入文件,從當(dāng)前文件指針開始,就好像通過 writeShort 方法給出了后面的字節(jié)數(shù)。 這個(gè)值是實(shí)際寫出的字節(jié)數(shù),而不是字符串的長(zhǎng)度。 在長(zhǎng)度之后,按順序輸出字符串的每個(gè)字符,對(duì)每個(gè)字符使用修改后的 UTF-8 編碼。

指定者:

接口 DataOutput 中的 writeUTF

參數(shù):

參數(shù)名稱 參數(shù)描述
str 要寫入的字符串。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)