#acl All: == ファイル入力 == ファイル入出力のために、 つぎの4つをスーパークラスとする数十個のクラスが用意されています。 . !InputStream バイト入力 . !OutputStream バイト出力 . Reader テキスト入力 . Writer テキスト出力 なおこの4つは抽象クラスのため、直接利用することはできません。 ---- テキスト形式のファイルからの入力には Readerクラスのサブクラスである !BufferedReader クラスを利用します。 !BufferedReader クラスの readLineメソッドを使うことで1行ずつ読み取ることができます。 利用する機能は次の3つです。 {{{#!java BufferedReader b; String s; b = new BufferedReader( ... ); s = b.readLine(); b.close(); }}} . 4行目で、!BufferedReaderクラスのインスタンスを作ります。 . 5行目で、このインスタンスを使ってreadLineメソッドを使って1行分読み取り、結果を文字列sに代入しています。 . 6行目で、ファイルを閉じています。 ファイルを使い終わったときには、ファイルを閉じる処理が必要です。<
> ファイルの使い始めのopenは必要ありません。インスタンスを作ればよい。 ---- readLineメソッドはファイルの終わりに達したときは null を返します。 ファイルを1行づつ読んで終わりまで処理するには、この条件を使って記述します。 {{{ while( true ) { s = b.readLine(); if(s == null) break; // 各行での必要な処理はここに書く } }}} これと同じ内容を、次のように書くこともできます。 {{{ while( (s = b.readLine() ) != null) { // 各行での必要な処理はここに書く } }}} ---- {{{#!java public class ReadSample { public static void main(String[] args) { try { java.io.FileReader f; java.io.BufferedReader b; String s; f = new java.io.FileReader( args[0] ); b = new java.io.BufferedReader( f ); while( (s = b.readLine()) != null) { System.out.println( s ); } b.close(); } catch(Exception e) { System.out.println( e ); } } } }}}