ストリームの分類

ストリームの分類にはまず、入出力の区分、使用形態、データ単位により分類することが出来ます。
それぞれについて見ていきます。

入出力による分類

入出力ストリームは基本的にデータをファイルに書き込んだり読み込んだりするときに使用します。

  • 出力用ストリーム・・・・・・・・プログラムからファイルなどにデータを書き込む
  • 入力用ストリーム・・・・・・・・ファイルなどからプログラムにデータを読み込む

データ単位による分類

データ単位のストリームにはバイトストリーム(byte)とテキストストリームがあります。
やはりバイトストリーム、テキストストリームにも出力用と入力用のストリームが用意されています。

データ単位のストリームにはバイトストリーム(byte)とテキストストリームがあります。

バイトストリーム

バイトストリームとはバイト(byte)単位で扱うストリームです。
日本語などUnicode文字列のテキストデータなどを扱うには不向きです。
出力を扱うクラスにはJava.ioパッケージに属しているOutputStreamを入力を扱うクラスには同じくJava.ioパッケージに属しているInputStreamがあります。
バイトストリームの階層は以下のようになります。

出力用ストリーム
説明
OutputStream データをバイト形式で出力するクラスのスーパークラス
FileOutputStream バイトデータをファイルへ出力する
FilterOutputStream 出力ストリームをフィルタ処理するクラスのスーパークラス
DataOutputStream プログラム内の基本データ型の値をバイトデータに変換して出力
BufferedOutputStream プログラムからの出力を一旦バッファに貯めておいてからまとめて出力することができ出力の効率をよくする

入力用ストリーム
説明
InputStream データをバイト形式で入力するスーパークラス
FileInputStream ファイルからバイトデータを入力するためのストリーム
FilterInputStream 入力ストリームをフィルタ処理するクラスのスーパークラス
DataInputStream ファイルなどに書かれているバイトデータを基本データ型に変換して読み込みことができます
BufferedInputStream ファイルなどからバッファに一度にデータを読み込んでおきプログラムはそのバッファからデータを読み込むことで、ファイルへのアクセス数が減少し効率をあげることができる

テキストストリーム

バイトストリームは(byte)単位で入出力するストリームでした。
従ってもちろんファイルなどに書き込まれたバイトコードは私たちがテキストエディタを開いても読むことが出来ません。
私たちがファイルに書き込んだデータを読むためにはテキスト形式にしてやらなければいけません。
その為に用意されたストリームがテキストストリームです 。またはキャラクタストリームともいいます。
このストリームはそのなの通り文字を扱うストリームで プログラムから出力した文字をそのまま文字としてファイルに書き込みます。
またファイルに書き込まれた文字も文字としてプログラムで受け取ることが出来るのです。
ただ、ここで注意があります。Javaでは基本的文字コードはUNICODE(ユニコード)という文字コードを扱います。
ファイルは各プラットフォームで採用している文字コードによって異なりますが、EUCやSJISなどが使われています。
このため普通に文字コードでやり取りした場合文字化けを起こし読めないのです。

しかし、テキストストリームはプラットフォームの文字コードを認識しファイルへ出力するときはUNICODEからプラットフォームの文字コードへ、
ファイルから入力するときはプラットフォームの文字コードからUNICODEへ自動変換してくれる特徴があります。

テキストストリームの階層関係は以下のようになります。

ページのトップへ戻る