読み込みの事前確認

広告

前のページでテキストファイルから中身を読み取る方法を見ていきましたが、実際にはファイルを読む前に色々と確認しておいた方がいいと思います。

具体的には、開こうとするファイルが(1)実際に存在するか、(2)それがファイルなのか、(3)読み込み可能なのか、を確認しておきます。例えば下記のようなメソッドを用意しておきファイルを読む前に確認しておきましょう。

private boolean checkBeforeReadfile(File file){
  if (file.exists()){
    if (file.isFile() && file.canRead()){
      return true;
    }
  }

  return false;
}

上記では、"exists"メソッドでファイルの存在を確認し、"isFile"メソッドで対象のFileクラスオブジェクトがファイルであるかどうかを確認後、"canRead"メソッドで読み込み可能かどうかを判別してます。(詳しくは『ファイルを管理する』を参照して下さい)。

サンプル

以上を踏まえて前のページのサンプルを修正してみます。

streamTest2.java

import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;

class streamTest2{
  public static void main(String args[]){
    try{
      File file = new File("c:¥¥tmp¥¥test.txt");

      if (checkBeforeReadfile(file)){
        FileReader filereader = new FileReader(file);

        int ch;
        while((ch = filereader.read()) != -1){
          System.out.print((char)ch);
        }

        filereader.close();
      }else{
        System.out.println("ファイルが見つからないか開けません");
      }
    }catch(FileNotFoundException e){
      System.out.println(e);
    }catch(IOException e){
      System.out.println(e);
    }
  }

  private static boolean checkBeforeReadfile(File file){
    if (file.exists()){
      if (file.isFile() && file.canRead()){
        return true;
      }
    }

    return false;
  }
}

結果は同じですが、上記をコンパイルして実際に実行してみると下記のようになります。

p2

例外処理がしてありますので、あえて事前に確認するまでもないのですけど、例外を使わずに処理できるならしておいたほうがいいかと思います。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)