W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
使用隨機(jī)訪問文件,我們可以從文件讀取以及寫入文件。
使用文件輸入和輸出流的讀取和寫入是順序過程。
使用隨機(jī)訪問文件,我們可以在文件中的任何位置讀取或?qū)懭搿?/span>
RandomAccessFile類的一個(gè)對(duì)象可以進(jìn)行隨機(jī)文件訪問。我們可以讀/寫字節(jié)和所有原始類型的值到一個(gè)文件。
RandomAccessFile可以使用其readUTF()和writeUTF()方法處理字符串。
RandomAccessFile類不在InputStream和OutputStream類的類層次結(jié)構(gòu)中。
可以在四種不同的訪問模式中創(chuàng)建隨機(jī)訪問文件。訪問模式值是一個(gè)字符串。它們列出如下:
模式 | 含義 |
---|---|
"r" | 文件以只讀模式打開。 |
"rw" | 該文件以讀寫模式打開。 如果文件不存在,則創(chuàng)建該文件。 |
"rws" | 該文件以讀寫模式打開。 對(duì)文件的內(nèi)容及其元數(shù)據(jù)的任何修改立即被寫入存儲(chǔ)設(shè)備。 |
"rwd" | 該文件以讀寫模式打開。 對(duì)文件內(nèi)容的任何修改立即寫入存儲(chǔ)設(shè)備。 |
我們通過指定文件名和訪問模式來創(chuàng)建RandomAccessFile類的實(shí)例。
RandomAccessFile raf = new RandomAccessFile("randomtest.txt", "rw");
隨機(jī)訪問文件具有文件指針,當(dāng)我們從其讀取數(shù)據(jù)或向其寫入數(shù)據(jù)時(shí),該文件指針向前移動(dòng)。
文件指針是我們下一次讀取或?qū)懭雽㈤_始的光標(biāo)。
其值指示光標(biāo)與文件開頭的距離(以字節(jié)為單位)。
我們可以通過使用其getFilePointer()方法來獲取文件指針的值。
當(dāng)我們創(chuàng)建一個(gè)RandomAccessFile類的對(duì)象時(shí),文件指針被設(shè)置為零。
我們可以使用seek()方法將文件指針設(shè)置在文件中的特定位置。
RandomAccessFile的length()方法返回文件的當(dāng)前長度。我們可以通過使用其setLength()方法來擴(kuò)展或截?cái)辔募?br />
以下代碼顯示如何使用RandomAccessFile對(duì)象讀取和寫入文件。
import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; public class Main { public static void main(String[] args) throws IOException { String fileName = "randomaccessfile.txt"; File fileObject = new File(fileName); if (!fileObject.exists()) { initialWrite(fileName); } readFile(fileName); readFile(fileName); } public static void readFile(String fileName) throws IOException { RandomAccessFile raf = new RandomAccessFile(fileName, "rw"); int counter = raf.readInt(); String msg = raf.readUTF(); System.out.println(counter); System.out.println(msg); incrementReadCounter(raf); raf.close(); } public static void incrementReadCounter(RandomAccessFile raf) throws IOException { long currentPosition = raf.getFilePointer(); raf.seek(0); int counter = raf.readInt(); counter++; raf.seek(0); raf.writeInt(counter); raf.seek(currentPosition); } public static void initialWrite(String fileName) throws IOException { RandomAccessFile raf = new RandomAccessFile(fileName, "rw"); raf.writeInt(0); raf.writeUTF("Hello world!"); raf.close(); } }
上面的代碼生成以下結(jié)果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: