ストリームを効率的に読み込み - BufferedInputStream基本的な使い方

2009/03/04 18:10Update
TAGS: ファイル | 入力 | FileInputStream | InputStream | BufferedInputStream | ストリーム | サンプル

バッファ機能を持つ入力ストリームBufferedInputStreamの基本的な使い方についてサンプルから学びます。

BufferedInputStreamクラス概要


ファイルやネットワークなどのストリームからデータを取得するには、FileInputStreamなどの入力ストリーム(InputStream)クラスを用いることが多い。しかし、これらのクラスのread()が呼び出された度にファイルや・ネットワークにアクセスするため、効率がよくありません。

BufferedInputStreamは、バッファ機能を持つ入力ストリームで、一度のアクセスで多くのデータをバッファに格納することによって、処理が早まることができます。

java.io.InputStream
∟java.io.FilterInputStream
 ∟java.io.BufferedInputStream

コンストラクタ:
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in, int size)

パラメータ in:入力ストリーム
パラメータ size:バッファサイズ

バッファサイズを指定しなかった場合、デフォルトで「8192」になります。

主たるメソッド:
int     available()
int     read()
int     read(byte[] b, int off, int len)

※メソッド的には、定義や使い方はInputStreamと全く一緒。


BufferedInputStream使い方(サンプル)


TestBufferedInputStream.java
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class TestBufferedInputStream {

    /**
     * BufferedInputStreamの使い方 サンプル
     */
    public static void main(String[] args) {
        try {
            //1)InputStreamの取得
            FileInputStream fis = new FileInputStream("c:/test.txt");
            //2)BufferedInputStreamオブジェクト生成
            BufferedInputStream bis = new BufferedInputStream(fis);
            
            byte []fbytes = new byte[1024];
            
            while ((bis.read(fbytes)) >= 0) {   //3)read()で読み込み
                System.out.print(new String(fbytes));
            }
            
            bis.close();            //4)ストリームを閉じる
            
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }

}


参考資料


java.io.BufferedInputStream API仕様

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments

用户名 (required)

Email (will not be published) (required)

URL

Evaluation