talosのプログラミング教室

Java Gold合格への道 ~Java I/O・読み込みの位置制御~

スポンサーリンク

こんにちは。たろすです。

今回はJava I/Oの読み込みの位置制御について説明します。

位置制御の方法

位置制御にはmarkメソッドやresetメソッド、skipメソッドを使います。

try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath))) {
	bw.write("abcdefgh");
} catch (IOException e) {
	e.printStackTrace();
}

try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
	for (int i = 0; i < 3; i++) {
		System.out.print((char) br.read());
		br.skip(1);
	}

	System.out.println();

	br.mark(3);
	System.out.println(br.readLine());

	br.reset();
	System.out.println(br.readLine());

} catch (FileNotFoundException e) {
	e.printStackTrace();
} catch (IOException e) {
	e.printStackTrace();
}
ace
gh
gh

skipメソッドは引数の分だけデータをスキップします。

なので一文字飛ばしで「ace」と出力されます。


markメソッドは現在の位置にマークを設定します。

引数は読み取ることができる文字数の上限です。

最後に「e」が出力され、その後に1バイトスキップされているので現在位置は「g」になります。

そこからreadLineで1行読み込んでいるので「gh」と出力されます。


resetメソッドは最後に設定されたマークに移動します。

「g」の位置にマークがあるのでそこに移動し、readLineで1行読み込んでいるので「gh」と出力されます。

おわりに

今回はJava I/Oの読み込みの位置制御について説明しました。