welcome: please sign in
location: ファイル入力

ファイル入力

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

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


概要

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

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

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

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


インスタンスの作成

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

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

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

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

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


各行の入力

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

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


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


例外処理

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

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

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

ブロックは

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


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

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

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

ファイル入力のときの例外は Exception型とし変数名をつけます。

ファイル sample.txt の内容を表示するプログラムは次のように書けます。

   1 public class ReadSample
   2 {
   3         public static void main(String[] args)
   4         {
   5                 try
   6                 {
   7                         FileReader f;
   8                         BufferedReader b;
   9                         String s;
  10                         
  11                         f = new FileReader( "sample.txt" );
  12                         b = new 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 }


パッケージを利用する

Javaであらかじめ用意されているクラスはパッケージに分けて管理されています。

上に示したプログラムをコンパイルしようとすると、FileReaderやBufferedReaderが分かりません、というエラーが出ます。

利用するクラスがどのパッケージに含まれているかを示さなければなりません。

書き方1 クラス名をフルネームで書く

書き方2 import文でフルネームを書く

書き方3 import文でパッケージを指定する

ファイル入力 (最終更新日時 2009-11-25 00:33:32 更新者 masahiko)