1. 程式人生 > >RandomAccessFile讀寫檔案字元

RandomAccessFile讀寫檔案字元

我本來寫了個可以存入資訊的地址簿,使用RandomAccessFile類來隨機讀寫.當然可以使用GUI檢視.反正說也說不清了.我就直接說下下面的一個測試程式來說明我的問題:

Java code ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import java.io.*; class test { public static void main(String[] args) throws IOException{ RandomAccessFile r = 
new RandomAccessFile("heihei.txt""rw"); r.writeChar('a'); r.writeChar('b'); r.writeChar('c'); //這樣檔案的內容不就應該是abc了嗎? r.seek(2); //指標設定在a後. r.writeChar('d'); //檔案理應變成adbc,但貌似不是這麼回事,如下 StringBuffer strBuf = new StringBuffer(); r.seek(0); //指標歸回初始位置 strBuf.append(r.readChar());  strBuf.append(r.readChar());
strBuf.append(r.readChar());  strBuf.append(r.readChar()); System.out.println(strBuf); //結果是adc } }


居然沒有料到RandomAccessFile有自動更新檔案的功能,如果你將指標放在檔案中間,不是在指標位置插入內容,而是逐步更新內容,此時檔案大小不會增加,除非你把指標放在檔案末尾.
這也就是我的地址簿出錯的原因,如果我在中間插入內容的話,就會出現原來的莫部分丟失的情況.

無語,真的無語,弄了半天才發現原來是這裡出了問題.真不知道Java語言開發者的大腦怎麼想的.