next up previous contents
Next: ストリームを使ったネットワーク・プログラミング Up: 応用 Java Application Previous: 演習課題

Stream

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 の使い方が分かれば、不自由しないはずです。 今回は、それ以外のストリームのクラスについて紹介してみたいと思います。





maruyama@wakhok.ac.jp