初心者向けのJava講座です。一緒にJavaを勉強しませんか?
はじめてのJava入門初心者向けのJava講座 |
ストリームの分類
ストリームの分類にはまず、入出力の区分、使用形態、データ単位により分類することが出来ます。
それぞれについて見ていきます。
入出力による分類
入出力ストリームは基本的にデータをファイルに書き込んだり読み込んだりするときに使用します。
- 出力用ストリーム・・・・・・・・プログラムからファイルなどにデータを書き込む
- 入力用ストリーム・・・・・・・・ファイルなどからプログラムにデータを読み込む
データ単位による分類
データ単位のストリームにはバイトストリーム(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へ自動変換してくれる特徴があります。