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」と出力されます。