Java - テキストファイルの読み込み

テキストファイルを 1 文字ずつ読み込む

テキストファイルを 1 文字ずつ読み込むには FileReader クラスを使用します。まず、読み込むファイルを対象として File クラスのオブジェクトを生成します。次に、そのオブジェクトを引数として FileReader クラスのオブジェクトを生成します。

File file = new File("C:¥¥file.txt");
FileReader filereader = new FileReader(file);
FileReader クラス

ただし、FileReader クラスのオブジェクトを生成する場合、FileNotFoundException 例外が発生する可能性があるため、例外処理を施したサンプルコードは以下のように記述します。

try {
  File file = new File("C:¥¥file.txt");
  FileReader filereader = new FileReader(file);
} catch(FileNotFoundException e) {
  System.out.println(e);
}
FileReader クラス

次にファイルから文字を読み込みます。ただし、FileReader クラスは 1 文字ずつ読み込むため、パフォーマンスに注意してください。読み込むためには read メソッドを使用します。読み込んだ値は int 型の値として取得できます。これは、文字コードを表す整数であるため、読み込んだ文字を、文字として表示する場合は以下のように記述します。

try {
  
  File file = new File("C:¥¥file.txt");
  FileReader filereader = new FileReader(file);
  
  int ch = filereader.read();
  System.out.println((char)ch);
  
} catch(FileNotFoundException e) {
  System.out.println(e);
} catch(IOException e) {
  System.out.println(e);
}
FileReader クラス

read メソッドは IOException 例外が発生する可能性があるため、例外処理を施してあります。

read メソッドは、ファイルの先頭から 1 文字読み込みます。そして読み込む位置が次の文字に移動します。そのため、連続して read メソッドを使うとファイルの先頭から順に 1 文字ずつ読み込みます。ファイルの終端に到達した場合は -1 を返します。

ファイルの先頭から終端まで文字を読み込みたい場合は、read メソッドが -1 を返すまで繰り返し実行します。

try {

  File file = new File("C:¥¥file.txt");
  FileReader filereader = new FileReader(file);

  int ch = filereader.read();
  while(ch != -1){
    System.out.print((char)ch);
    ch = filereader.read();
  }
  
} catch(FileNotFoundException e) {
  System.out.println(e);
} catch(IOException e) {
  System.out.println(e);
}
FileReader クラス

ファイルに対する処理がすべて完了した場合、close メソッドを使ってファイルを閉じます。

try {

  File file = new File("C:¥¥file.txt");
  FileReader filereader = new FileReader(file);

  int ch = filereader.read();
  while(ch != -1){
    System.out.print((char)ch);
    ch = filereader.read();
  }
  
  filereader.close();
  
} catch(FileNotFoundException e) {
  System.out.println(e);
} catch(IOException e) {
  System.out.println(e);
}
FileReader クラス

テキストファイルをまとめて読み込む

テキストファイルをまとめて読み込むには、BufferedReader クラスを使用します。BufferedReader クラスは FileReader クラスを拡張する形で利用されます。具体的には、以下のように記述します。

File file = new File("C:¥¥file.txt");
FileReader filereader = new FileReader(file);
BufferedReader br = new BufferedReader(filereader);
BufferedReader クラス

FileReader クラスのオブジェクトを引数として BufferedReader クラスのオブジェクトを作成します。そして、BufferedReader クラスのオブジェクトに対してファイルを読み込むためのメソッドを実行します。

1 行単位に読み込むためには readLine メソッドを使用します。readLine メソッドは、テキストの終端(改行コード)が認識されるまで読み込みを行います。ただし、改行コードは読み込まれないため、改行を含まないテキストを String 型として返します。ファイルの終端まで読み込まれると、null を返します。

try {
  
  File file = new File("C:¥¥file.txt");
  FileReader filereader = new FileReader(file);
  BufferedReader br = new BufferedReader(filereader);
  
  String str = br.readLine();
  while(str != null){
    System.out.println(str);
    str = br.readLine();
  }
  
  br.close();
  
} catch(FileNotFoundException e) {
  System.out.println(e);
} catch(IOException e) {
  System.out.println(e);
}
BufferedReader クラス

関連記事