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

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

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

執筆者:掌田 津耶乃

テキストファイルからの読み込み


続いて、テキストファイルからテキストを読み込む処理についてです。これも、書き出しと同じように2つのクラスを使います。

FileReader――テキストファイルからString値を読み込むためのものです。
BufferedReader――ストリームにバッファ機能を付加するものです。

この2つも、基本的な使い方は書き出しのときとほぼ同じです。ざっと手順を整理しておきましょう。

1.まず、ファイル名を指定してFileReaderインスタンスを作成します。
2.作成したFileReaderをもとに、BufferedReaderインスタンスを作成します。
3.BufferedReaderにあるメソッドを使って、ファイルを読み込みString値として取り出します。
4.読み込み終わったら、closeメソッドを呼び出しストリームを開放します。

基本的な流れ自体はほとんど変わらないのですが、実は大きく異なる点が1つだけあります。それは、「読み込みの場合、どこまでテキストを読み込んだかを確認しながら、何度も読み込みを行わないといけない」という点です。テキストファイルの読み込みは、「ファイルの最後まで全部を一発で読み込む」ということはできないのです。できるのは「○○バイト読み込む」とか、「1行読み込む」というように、指定の部分を読み込むことだけ。ですから、テキストを読み込んでは「最後まで読み終えたか」をチェックし、まだ残っていたらまた読み込む……というように、読み込み作業を繰り返し行う必要があるのです。

では、この点を踏まえて、プログラムを作成してみましょう。先ほどのサンプルに、「起動したらファイルからテキストを読み込んでTextAreaに表示する」という機能を追加してみることにします。

package jp.allabout;

import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class SampleApp extends Frame {
  TextArea area;

  public SampleApp(){
    this.setSize(new Dimension(300,200));
    area = new TextArea();
    this.add(area, BorderLayout.CENTER);
    this.addWindowListener(new WindowMyAdapter());
    this.loadFromFile(); // ★追加
  }
  
  public static void main(String[] args) {
    new SampleApp().setVisible(true);
  }
  
  public void saveToFile(){
    ……略……
  }
  
  public void loadFromFile(){
    String fname = "text_data.txt";
    FileReader reader = null;
    BufferedReader breader = null;
    try {
      reader = new FileReader(fname);
      breader = new BufferedReader(reader);
      String result = "";
      String allString = "";
      while((result = breader.readLine()) != null){
        allString += result + "\n";
      }
      area.setText(allString);
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      try {
        breader.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
  
  class WindowMyAdapter extends WindowAdapter {
    
    public void windowClosing(WindowEvent arg0) {
      saveToFile();
      System.exit(0);
    }
  }
}
  • 前のページへ
  • 1
  • 3
  • 4
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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