バッファ入出力





FileReader/FileWriter によって日本語も扱える入出力ストリームを作成できましたが、FileReader/FileWriter には1文字単位でファイルアクセスして非効率であるという問題があります。

そこで、データをまとめて入出力することのできる BufferedReader/BufferedWriter を利用することにします。使い方はこれまで学んだことの延長線上にあるのでわりとスムーズにいくと思います。

BufferedReaderクラスは、データをバッファにため込んでまとめて読み込みます。同様に、BufferedWriterクラスは、データをバッファにため込んでまとめて書き込みを行います。

sample.txt に「プログラミングの勉強」と入力されているものとして以下のコードを実行します。

package kihon;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Sample {
public static void main(String args[]) throws IOException{

BufferedReader br=new BufferedReader(new FileReader("sample.txt"));
int data;
while((data=br.read()) !=-1){
System.out.print((char)data);
}
br.close();

BufferedWriter bw=new BufferedWriter(new FileWriter("sample.txt"));
String str="出力しました。";
bw.write(str);
bw.close();
}
}


実行結果:

プログラミングの勉強

そして sample.txt に「出力しました。」と記述されていれば成功です。

BufferedReaderコンストラクタの引数は、Reader型となります。また、BufferedWriterコンストラクタの引数は、Writer型となります。ReaderおよびWriterは抽象クラスなので、それを継承するFileReaderおよびFileWriterを指定できることになります。

また、コンストラクタの作成においては、BufferedReaderでいうとFileReaderがファイルを読み込んでからBufferedReaderがそれにかぶせています。

つまり、読み込みはFileReaderが行い、さらにBufferedReaderによってまとめて読む機能が拡張されることになります。

読み込みには read()メソッドを使用しましたが、readLine()メソッドを使うことも可能です。このメソッドは1行ずつの読み込みをするメソッドで、何も読み込めない場合は null を返します。

String readLine()

その場合、whileループの部分は

while((data=br.readLine()) !=null)

と変更します。


続きはブロマガを購入して楽しもう!
このコンテンツはブロマガ(有料)です。
購入すると続きをお楽しみいただけます。
ブロマガって何?
FileReader/FileWriter によって日本語も扱える入出力ストリームを作成できましたが、FileReader/FileWriter には1文字単位でファイルアクセスして非効率であるという問題があります。 そこで、データをまとめて入出力することのできる BufferedReader/BufferedWriter を利用することにします。使い方はこれまで学んだことの延長線上にあるのでわりとスムーズにいくと思います。 BufferedReaderクラスは、データをバッファに...Continue reading

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

  • Comments (Close): -
  • TrackBack (Close): -
  • 閉じるボタン
クラスライブラリ解説 目次
クラスライブラリとは
 ├ Java APIの調べ方
 ├ Objectクラスを調べる
 ├ ライブラリのインポート
 ├ 完全修飾クラス名を調べる
 ├ staticインポート
 ├ 外部ライブラリの利用

文字列を扱う
 ├ Stringとイミュータプル
 ├ StringBuilder 文字列の連結
 ├ toString()のオーバーライド
 ├ toXxCase() 大文字と小文字
 ├ compareTo() 値の比較
 ├ parseDouble() 文字を小数値に
 └ 文字列を抜き出す
 ├ char配列からString型へ変換
 ├ 空白文字の除去

日付を扱う
 ├ Calendar 現在の日付
 ├ Date 日付の表示

数値演算を扱う
 ├ round() 切上・切捨・四捨五入
 ├ BigDecimal
 ├ sqrt(),pow() 累乗と平方根
 ├ BigInteger
 ├ int型の最大値・最小値
 ├ random() 乱数作成

ファイルを扱う
 ├ ファイルの存在確認
 ├ ファイルを作成
 ├ ファイルの削除
 ├ ファイルサイズを調べる

入出力ストリーム
 ├ ファイルを読み込む
 ├ 画像ファイルのコピー
 ├ 日本語の読み込みと書き出し
 ├ バッファ入出力
 ├ データ型フリーの出力ストリーム
 ├ getBytes()メソッド

書式つき入出力
 ├ 書式を指定して出力
 ├ 引数インデックス
 ├ 整数値のフォーマット
 ├ 小数値のフォーマット
 ├ 九九の表のフォーマット

例外処理
 ├ printStackTrace()
 ├ NullPointerException
 └ NumberFormatException
月別アーカイブ
カテゴリ
リンク
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。