665
阿裏雲
技術社區[雲棲]
Java IO: RandomAccessFile
RandomAccessFile允許你來回讀寫文件,也可以替換文件中的某些部分。FileInputStream和FileOutputStream沒有這樣的功能。
創建一個RandomAccessFile
在使用RandomAccessFile之前,必須初始化它。這是例子:
1 |
RandomAccessFile file = new RandomAccessFile( "c:\\data\\file.txt" , "rw" );
|
請注意構造函數的第二個參數:“rw”,表明你以讀寫方式打開文件。請查閱Java文檔獲知你需要以何種方式構造RandomAccessFile。
在RandomAccessFile中來回讀寫
在RandomAccessFile的某個位置讀寫之前,必須把文件指針指向該位置。通過seek()方法可以達到這一目標。可以通過調用getFilePointer()獲得當前文件指針的位置。例子如下:
1 |
RandomAccessFile file = new RandomAccessFile( "c:\\data\\file.txt" , "rw" );
|
5 |
long pointer = file.getFilePointer();
|
讀取RandomAccessFile
RandomAccessFile中的任何一個read()方法都可以讀取RandomAccessFile的數據。例子如下:
1 |
RandomAccessFile file = new RandomAccessFile( "c:\\data\\file.txt" , "rw" );
|
3 |
int aByte = file.read();
|
read()方法返回當前RandomAccessFile實例的文件指針指向的位置中包含的字節內容。Java文檔中遺漏了一點:read()方法在讀取完一個字節之後,會自動把指針移動到下一個可讀字節。這意味著使用者在調用完read()方法之後不需要手動移動文件指針。
寫入RandomAccessFile
RandomAccessFile中的任何一個write()方法都可以往RandomAccessFile中寫入數據。例子如下:
1 |
RandomAccessFile file = new RandomAccessFile( "c:\\data\\file.txt" , "rw" );
|
3 |
file.write( "Hello World" .getBytes());
|
與read()方法類似,write()方法在調用結束之後自動移動文件指針,所以你不需要頻繁地把指針移動到下一個將要寫入數據的位置。
RandomAccessFile異常處理
為了本篇內容清晰,暫時忽略RandomAccessFile異常處理的內容。RandomAccessFile與其他流一樣,在使用完畢之後必須關閉。想要了解更多信息,請參考Java IO異常處理。
最後更新:2017-05-23 12:02:40