1回で書ききれなそうなので随時更新していくことにする。
基礎的な概念
ストリームとは
データの入出力が行われる機構のこと。
入出力は小川に例えることができ、文字が流れるなら文字ストリーム。バイト列が流れるならバイトストリームと呼ばれる。
フィルタとは
ストリームの途中に挟み込み、変換処理をする部品。
Filter~クラスを継承している必要がある。主なクラス参照。
バッファリングフィルタ
フィルタの中でもよくつかわれるフィルタ。
通常ストリームは1文字、1バイトずつ流れていくがバッファリングフィルタを使うことで、まとまった量のデータが下流に流れるようになり、パフォーマンスがアップする。
主なクラス
クラス名 | 内容 | 備考 |
---|---|---|
FileWriter | 文字列書き込み | 文字ストリーム |
FileReader | 文字列読み込み | 文字ストリーム |
FileOutputStream | バイト列書き込み | バイトストリーム |
FileInputStream | バイト列読み込み | バイトストリーム |
BufferedReader | 文字列読み込み用フィルタ | |
BufferedWriter | 文字列書き込み用フィルタ | |
BufferedInputStream | バイト列読み込み用フィルタ | |
BufferedOutputStream | バイト列書き込み用フィルタ | |
CipherOutputStream | 暗号化処理フィルタ | FilterOutputStreamを継承 |
ファイル操作
flushメソッド
バッファにしか書き込まれていない情報を、実際にファイルに書き出す。
これをせずにcloseするとファイルに書き込まれていなかったりする。
closeメソッド
ファイルを閉じる。忘れてはいけない。でも書いてないからといってcloseされていないとは限らないので以下参照 tatsuhi10.hatenablog.com
フィルタ方法
フィルタは既に存在するストリームを接続先としてコンストラクタで指定して生成する。フィルタはいくつ使ってもよい。
// ファイル出力ストリームを生成 FileOutputStream fos = new FileOutputStream("data.txt"); // ファイル出力のストリームを下流にもつ暗号化ストリームを生成 CipherOutputStream cos = new CipherOutputStream(fos, algo); // フィルタが上流なので、上流側のメソッドを呼び出すことでファイルに書き込まれる cos.write(65);
あとから追加したフィルタのほうが上流になることに注意。
2つのフィルタを追加した場合も、2つ目に追加したフィルタのほうが上流になる。