RandomAccessFile のサンプルRevised: Mar./16th/2002
次のサンプルは、複数のコマンドライン引数を取ります。最初の引数を入出力ファイルとして、以降の引数をこのファイルの末尾に追加します。
また、最後にファイルポインタを先頭に戻して、全ての文字を読み込んで標準出力に出力しています。
Append.java:
import java.io.*;
class Append {
public static void main (String[] args) throws IOException {
// RandomAccessFile のインスタンス化
RandomAccessFile raf = new RandomAccessFile(args[0], "rw");
// ファイルの長さの取得
long len = raf.length();
// ファイルポインタを末尾にセット
raf.seek(len);
// ファイルに書き込み
for (int i = 1; i < args.length; i++) {
raf.writeUTF(args[i] + " ");
}
raf.writeUTF("\n");
// ファイルポインタを先頭にセット
raf.seek(0L);
try {
while (true) {
// 文字の読み込み
String cha= raf.readUTF();
// 標準出力へ出力
System.out.print(cha);
}
} catch (EOFException eofe) {
// ファイル終了で EOFException 発生
System.out.println();
System.out.println("ファイル終了 [EOF]");
}
// RandomAccessFile ストリームを閉じる
raf.close();
}
}
C:\IO>javac Append.java C:\IO>java Append test.txt MACBETH MACBETH C:\IO>java Append test.txt Though Birnam wood be come to Dunsinane, MACBETH Though Birnam wood be come to Dunsinane, ファイル終了 [EOF] C:\IO>java Append test.txt And thou opposed, being of no woman born, MACBETH Though Birnam wood be come to Dunsinane, And thou opposed, being of no woman born, ファイル終了 [EOF] C:\IO>java Append test.txt Yet I will try the last. MACBETH Though Birnam wood be come to Dunsinane, And thou opposed, being of no woman born, Yet I will try the last. ファイル終了 [EOF] C:\IO>java Append test.txt MACBETH Though Birnam wood be come to Dunsinane, And thou opposed, being of no woman born, Yet I will try the last. ファイル終了 [EOF] C:\IO>java Append test.txt ホールデン・コールフィールド! MACBETH Though Birnam wood be come to Dunsinane, And thou opposed, being of no woman born, Yet I will try the last. ホールデン・コールフィールド! ファイル終了 [EOF] C:\IO>java Append test.txt ビリー・ブラウン! MACBETH Though Birnam wood be come to Dunsinane, And thou opposed, being of no woman born, Yet I will try the last. ホールデン・コールフィールド! ビリー・ブラウン! ファイル終了 [EOF] C:\IO>
上で作ったファイルを読み込むだけのサンプルを挙げておきます。
Page.java:
import java.io.*;
class Page {
public static void main (String[] args) throws IOException {
// RandomAccessFile のインスタンス化
RandomAccessFile raf = new RandomAccessFile(args[0], "r");
try {
while (true) {
// 文字の読み込み
String cha= raf.readUTF();
// 標準出力へ出力
System.out.print(cha);
}
} catch (EOFException eofe) {
// ファイル終了で EOFException 発生
System.out.println();
System.out.println("ファイル終了 [EOF]");
}
// RandomAccessFile ストリームを閉じる
raf.close();
}
}
C:\IO>javac Page.java C:\IO>java Page test.txt MACBETH Though Birnam wood be come to Dunsinane, And thou opposed, being of no woman born, Yet I will try the last. ホールデン・コールフィールド! ビリー・ブラウン! ファイル終了 [EOF] C:\IO>