RandomAccessFile讀寫檔案字元
阿新 • • 發佈:2019-01-09
我本來寫了個可以存入資訊的地址簿,使用RandomAccessFile類來隨機讀寫.當然可以使用GUI檢視.反正說也說不清了.我就直接說下下面的一個測試程式來說明我的問題:
Java code ?
居然沒有料到RandomAccessFile有自動更新檔案的功能,如果你將指標放在檔案中間,不是在指標位置插入內容,而是逐步更新內容,此時檔案大小不會增加,除非你把指標放在檔案末尾.
這也就是我的地址簿出錯的原因,如果我在中間插入內容的話,就會出現原來的莫部分丟失的情況.
無語,真的無語,弄了半天才發現原來是這裡出了問題.真不知道Java語言開發者的大腦怎麼想的.
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語言開發者的大腦怎麼想的.