連載
» 2006年04月21日 00時00分 公開

EclipseでJavaに強くなる(2):EclipseでJavaの入出力を理解する (1/4)

[小山博史,@IT]

 今回は、ユーザーからの入力を受け取って、その値を使って計算をするプログラムを作成する方法について解説します。プログラムを対話的に実行する方法の1つに、コンソール画面を使ったユーザーインターフェイスを用意する方法があります。これをJavaで実現するには入出力用クラスライブラリ(java.ioパッケージ)に含まれるクラスを使います。今回は、この基本クラスの使い方を理解しましょう(ここで「パッケージ」という言葉が登場しましたが、パッケージについては「Eclipseではじめるプログラミング 第11回 Javaのパッケージを理解する」を参照して理解してください)。

 New I/O API(java.nioパッケージ)という、java.io パッケージの入出力機能を補足するクラスライブラリもありますが、こちらはjava.ioパッケージについて理解してから使えるようになればよいでしょう。

コンピュータに用意された入出力の機能

 早速java.ioパッケージについて解説をしたいところですが、その前に基本事項を押さえておきましょう。

 コンピュータシステムのハードウェアは、制御装置、演算装置、記憶装置、入力装置、出力装置といった5つの基本要素から構成されています。このうち、よく使用する標準的な入力装置、出力装置については簡単に扱えるような仕組みがOSにより提供されています。一般的なパーソナルコンピュータのOSではこれらの装置を抽象化して、標準入力、標準出力と呼んで、プログラムから統一的に扱えるようにしています。

 こういった仕組みがあるため、キーボードから入力されたデータをプログラムで受け取るためには、標準入力からデータを読み取るようにコーディングをすればよく、プログラムの計算結果をディスプレイへ出力するためには、標準出力へデータを書き出すようにコーディングをすればよいのです。

図1 コンピュータシステムの基本要素 図1 コンピュータシステムの基本要素

 ここで、プログラムが計算結果を出力するには、標準出力だけあればよいのですが、エラーが発生した場合にもそれをどこかへ出力する必要があります。大抵、どちらもディスプレイへ表示することになるのですが、計算結果とエラー出力を分けることができないと困ってしまいます。このため、標準エラー出力というものが、標準出力とは別に用意されています。ただし、通常はどちらもディスプレイへ表示するように設定されています。

図2 標準入力、標準出力、標準エラー出力 図2 標準入力、標準出力、標準エラー出力

 これらの標準入力、標準出力、標準エラー出力を使えるように、Javaではjava.lang.Systemクラスにin、out、errというフィールドを用意しています。Java APIドキュメントによると、フィールドinはjava.io.InputStream型で、フィールドoutとerrはjava.io.PrintStream型になります。今回はjava.lang.Systemのinフィールドとoutフィールドの使い方について理解することにしましょう。

 ところでAPIリファレンスによると、「標準エラー出力」ストリーム、「標準入力」ストリームのように、ストリーム(stream)という用語が出てきています。このストリーム(stream)とは「川の流れ、液体・気体などの一定の流れ」という意味です。入出力されるデータというのは「川の流れ」のように流れていくので、この用語が使われています。

 もう少し説明をすると、例えばキーボードから[A][B][C][D]とキーを押下して文字データを入力したとします。すると画面上には「ABCD」が表示されます。次に「D」を消すために[BS(Back Space)]キーを押下して制御データを入力します。これで画面上では「ABC」となるのですが、入力したデータを取り消したことにはなりません。この場合、[A][B][C][D][BS(Back Space)]というデータが入力されたということになります。つまり、キーボードからデータを入力したということを取り消すことはできず、データは次々と流れていってしまうのです。

図3 ストリーム 図3 ストリーム
       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。