RandomAccessFile 支援檔案任意位置讀寫,適用於固定長度記錄的資料檔。範例寫入 10 筆 double 值,修改第 6 筆 (索引 5),再讀回全部列印。模式 "rw" 可讀寫,"r" 唯讀。
import java.io.*;
public class RandFileDemo {
public static void main(String[] args) {
if (args.length < 1) { System.out.println("用法: java RandFileDemo 檔名"); return; }
String file = args[0];
try {
// 寫入 10 筆 double
try (RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
for (int i = 0; i < 10; i++) raf.writeDouble(i * 1.414);
}
// 修改第 6 筆 (位移 5*8 bytes)
try (RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
raf.seek(5 * 8);
raf.writeDouble(47.0001);
}
// 讀回全部
try (RandomAccessFile raf = new RandomAccessFile(file, "r")) {
for (int i = 0; i < 10; i++)
System.out.println("Value " + i + ": " + raf.readDouble());
}
} catch (IOException e) { System.out.println(e); }
}
}
關鍵點:
seek(long pos) 移動檔案指標;getFilePointer() 取得目前位置。