Java の入出力は、基本的には、「ストリーム」という概念でまとめられています。
ストリーム Stream とは、文字どうり、情報の流れと考えることが出来ます。
UNIX/Cでも、「入出力の切り替え(re-direct)」とか「フィルタ」「パイプ」
といった、流れをイメージした言葉が使われていましたが、「ストリーム」は、
こうした考えをさらに押し進めたものです。
UNIX/Cで入出力を扱うときに一般的に用いられる、「ファイル・ディスクリプタ」
「ファイル・ポインタ」といった概念の直接の対応物は、Java には存在しません。
これらのUNIX/Cの概念は、情報の源ないしは情報の行き先を、「点」として指し示す
のですが、情報の流れを示す訳ではありません。
点には向きがありませんが、流れには向きがあります。ですから、ストリームの
クラスは、情報の端点の種類で種類が分かれるよりも先に、 コンピュータに
入って来る情報の流れと、コンピュータから出てゆく情報の流れに対応して、
InputStream , OutputStream の二つのクラスに大きく分かれます。
その後、ストリームは、情報の源・情報の終着点の種類や、途中のフィルタ等に 応じて、さらに異なるクラスに分かれてゆきます。前回見てきた、ファイルからの (への)入出力には、FileInputStream と FileOutputStream という二つのクラスが 関わっていました。前回も紹介しましたが、最も基本的な設定は、System クラスの 中で行われている、UNIX/Cの世界での標準入力・標準出力をJavaのストリームに 対応させる次のような設定の仕方です。
in = new BufferedInputStream(new FileInputStream(FileDescriptor.in), 128); out = new PrintStream(new BufferedOutputStream( new FileOutputStream(FileDescriptor.out), 128), true);
通常のファイルを対象としたJavaでの入出力については、ここに登場したクラスの他で は、前回見た、DatainputStream の使い方が分かれば、不自由しないはずです。 今回は、それ以外のストリームのクラスについて紹介してみたいと思います。