Javaプログラミング/Javaの基本

テキストファイル・アクセス(5ページ目)

Javaの基本は一通り覚えた。そんな人のために、もう一歩先の機能を学習していきましょう。まずは、テキストファイルのアクセスからです。

執筆者:掌田 津耶乃

プログラムを起動すると、テキストファイルからテキストを読み込んでTextAreaに表示する。


テキスト読み込みの流れ


ここでは、プログラムを起動するとloadFromFileメソッドを呼び出してテキストの読み込み処理を行っています。では、このloadFromFileメソッドの流れをざっと整理しましょう。

String fname = "text_data.txt";
FileReader reader = null;
BufferedReader breader = null;


まずは、読み込むファイル名と、ストリームを保管しておく変数名をそれぞれ用意しておきます。これは書き出し処理のときと同じですね。

try {
  reader = new FileReader(fname);
  breader = new BufferedReader(reader);

実際の処理は、try内で行います。この点も書き出しと同じです。まずファイル名を引数に指定してnew FileReaderし、このFileReaderインスタンスを引数に指定してnew BufferedReaderします。これでそれぞれのインスタンスが用意されました。

  
String result = "";
  String allString = "";
  while((result = breader.readLine()) != null){
    allString += result + "\n";
  }
  area.setText(allString);

テキストの読み込みは、繰り返しを使って行います。テキストを読むメソッドはいくつかありますが、もっともよく用いられるのが「readLine」というメソッドです。これは、1行だけ(改行コードが見つかるまで)のテキストを読み込み、返します。つまり、whileの条件文にある「result = breader.readLine()」で、テキストを1行読み込み変数に収める、ということを行っていたのですね。

非常に面白いのは、この代入文は、値が読み込めない場合(つまり最後まで読み込み終わった場合)には「null」になる、という点です。つまり、繰り返し部分でこの読み込みを行い、その結果がnullになったら抜け出るようにすれば、テキストから1行ずつテキストを読み込ませることができる、というわけです。

読み込んだテキストは、別途用意しておいた変数allStringに追加していきます。ただし、readLineで読み込んだテキストは「改行コードは含まれない」という点に注意する必要があります。readLineは、改行コードまでを読み込み、改行コードの手前までのテキストを返す(改行コードそのものは取り除かれる)のです。そこで、追加する際に"\n"も付け加えて、改行されるようにしておきます。そして繰り返しを抜けたら、areaに読み込んだテキストをsetTextして表示します。

} finally {
  try {
    breader.close();
  } catch (IOException e) {
    e.printStackTrace();
  }
}

最後に、finallyでBufferedReaderの「close」を呼び出してストリームを開放すれば、作業は終了です。

いかがですか? テキストの読み込みのほうが、書き出しよりも若干面倒ですね。whileの条件部分がちょっとわかりにくいですが、実際にこれも何度か書いて動かしてみれば、働きが見えてくるはずです。ともかく、こうした定型的な処理は「実際に何度も書いて動かす」ことで次第に頭に入ってくるもの。自分で作ったプログラムにテキスト読み書きの機能を追加するなどしていろいろと使ってみてください。
【編集部おすすめの購入サイト】
楽天市場で Java 関連の書籍を見るAmazon で Java 関連の書籍を見る
  • 前のページへ
  • 1
  • 3
  • 4
  • 5
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます