BufferedReaderクラス

BufferedReaderクラスもBufferedWriterクラスと同じくバッファに入れて処理を高速化するクラスです。
InputStreamReaderクラスでは一文字読み込んで処理をするのに対しBufferedReaderクラスでは、 まとめて読み取ることができます。
そのため非常に読み取り効率が上がります。

ではBufferedReaderクラスのコンストラクタを見てみます。

コンストラクタ
説明
BufferedReader(Reader in) デフォルトサイズのバッファでバッファリングされた、文字型入力ストリームを作成
BufferedReader(Reader in,int i) 指定されたサイズのバッファでバッファリングされた、文字型入力ストリームを作成

主なメソッド

戻り値
メソッド
概要
void close() ストリームを閉じる(終了)
void mark(int i) ストリームの現在位置にマークを設定
int read() 単一の文字を読み込む
long skip(long l) 文字をスキップ
boolean markSupported() このストリームが、実行するmark()操作をサポートする場合に真を返す
String readLine() 一行のテキストを読み込む
boolean ready() ストリームが読み込み可能なら真を返します。
void reset() ストリームを最も新しいマーク位置にリセットする

ではサンプルプログラムを見ていきます。

サンプルプログラム(BufferedReaderSample.java)

//import宣言
import java.io.*; class BufferedReaderSample{ public static void main(String args[]){ try{ //FileReaderオブジェクトの生成
FileReader fr = new FileReader(args[0]); //BufferedReaderオブジェクトの生成 BufferedReader br = new BufferedReader(fr);
String str;
//ファイルから一行だけ読み込み str = br.readLine(); System.out.println(str); //ストリームを閉じます br.close(); }catch(IOException e){ System.out.println("Exception :" + e); }
} }

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

コンパイル・実行してみます。
今回実行の際はtest2.txtを読み込みます。
プログラムの説明をします。
BufferedReaderクラスもやはりjava.ioパッケージに属しているのでimport宣言が必要です。
まず読み込むファイルのオブジェクトを作成します。
引数にはコンストラクタで指定されたファイル名が設定されます。
ここではコマンドライン引数を指定しています。

次にBufferedReaderクラスのインスタンス生成を行います。
引数にFileReaderオブジェクトを指定してやることで読み込みをバッファを利用して効率よく行うことが出来ます。
次にファイルの読み込みですが、ここではプログラムをわかりやすくするためにreadLine()を利用して一行だけ読み込ませています。

あくまでもreadLine()メソッドは一行だけしか読み込むことが出来ません。

読み込みが終了するとclose()メソッドでストリームを閉じます。
やはりファイルが読み込まれなかった場合などのために例外処理を行わなければいけません。
ここでは、ファイル名には先ほどBuffereWriterで作成したtest2.txtを指定しています。

ではもうひとつプログラムを作成したいと思います。

サンプルプログラム(BufferedReaderSample1.java)

//import宣言
import java.io.*;
class BufferedReaderSample1{
    public static void main(String args[]){

try{ //BufferedReaderオブジェクトの生成 BufferedReader br = new BufferedReader(new FileReader(args[0])); String str;
//while文を利用してファイルを読み込み
while((str = br.readLine()) != null){ System.out.println(str); } //ストリームを閉じます br.close(); }catch(IOException e){ System.out.println("Exception :" + e); } } }

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

コンパイル・実行してみます。

今度はwhile文を利用してファイル内のデータを全て呼び出しています。
つまりwhile文の条件式には str = br.readLine()) !=nullで読み込むデータがなくなれば条件式にはfalseが返ってきます。
つまりこれでファイル内のデータを全て読み込む設定になります。
ここでもtest2.txtを指定しているのではじめてのJava入門が50回出力されています。
画面上ではスペースの関係上7回しか表示されていませんが実際プログラムを実行してみたらわかるので試してください。

ページのトップへ戻る