ファイル入力

ファイル入力

ファイル入出力のために、 つぎの4つをスーパークラスとする数十個のクラスが用意されています。

なおこの4つは抽象クラスのため、直接利用することはできません。


テキスト形式のファイルからの入力には Readerクラスのサブクラスである BufferedReader クラスを利用します。

BufferedReader クラスの readLineメソッドを使うことで1行ずつ読み取ることができます。

利用する機能は次の3つです。

ファイルを使い終わったときには、ファイルを閉じる処理が必要です。
ファイルの使い始めのopenは必要ありません。インスタンスを作ればよい。


readLineメソッドはファイルの終わりに達したときは null を返します。
ファイルを1行づつ読んで終わりまで処理するには、5行目を次のように修正します。

これと同じ内容を、次のように書くこともできます。


BufferedReaderインスタンスを作成するときには、 コンストラクタの引数としてFileReaderのインスタンスを与える必要があります。

FileReaderコンストラクタの引数にはファイル名を与えます。

インスタンスfはここでしか用いないので、次のように記述することもある。

ファイル名や1文字ごとの情報はFileReaderインスタンスの状態として保持され、 行単位の情報はBufferedReaderインスタンスの状態として保持されると考えればよい。

処理はBufferedReaderインスタンスへのメソッドを通して行います。

ここまでをまとめると次のようになります。


例外処理

プログラム実行中になんらかの例外が起こることがあります。

例外が起こったときにプログラムの実行を中断するのではなく、なんらかの処理を行うよう記述できます。

例外処理の記述には try,cahtch 構文を用います。

ブロックは

通常は次のように記述します。 catchの箇所のインデントの仕方が、他の場合と違います。


ファイル入力時の例外処理

ファイル入力時には例外が発生する可能性があるので、必ずtry,catchを書きます。

ファイルを開く(インスタンスを作る)ところから、ファイルを閉じるところまでの範囲をtryのブロックにし、 その後ろにcatch

   1 public class ReadSample
   2 {
   3         public static void main(String[] args)
   4         {
   5                 try
   6                 {
   7                         java.io.FileReader f;
   8                         java.io.BufferedReader b;
   9                         String s;
  10                         
  11                         f = new java.io.FileReader( args[0] );
  12                         b = new java.io.BufferedReader( f );
  13                         
  14                         while( (s = b.readLine()) != null)
  15                         {
  16                                 System.out.println( s );
  17                         }
  18                         
  19                         b.close();
  20                 } catch(Exception e) {
  21                         System.out.println( e );
  22                 }
  23         }
  24 }

ファイル入力 (最終更新日時 2009-11-21 01:32:22 更新者 masahiko)