Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。KB)Androidアプリケーションは、Java言語を用いて開発できます。SEを、実際にAndroid上で実行できるソースコードとともに解説します。専用メソッドファイル出力PrintWriterクラスファイル入出力のサンプル最後に参考資料はじめに第6回目の本稿は、ストリームと入出力処理をとりあげます。入出力処理は、プログラムと外部とのデータのやりとりのことで、Javaでは、この入出力処理をストリームという仕組みを介して行います。SEでは、このような入出力の処理を、java.ioパッケージのAPIで提供しています。6とまったく同じというわけではありません。6に含まれるクラスやメソッドの一部が、実装されていない場合があります。Developersサイトにて確認するようにしてください。対象読者Androidアプリケーションの開発を始めたい方で、JavaとEclipseのごく基本的な知識がある方を対象とします。入出力とストリーム一般にプログラムは、それ単体のみで処理が完結するものはあまりありません。プログラムの外部から、何らかのデータを受けとり(入力)、それを処理して、結果を外部に書きだす(出力)というパターンがベースになっています。データの入力としては、ファイルからの読み込み、ネットワークでの通信データの受信などがあります。出力は反対の処理となり、ファイルへの書き込み、通信データの送信となります。画面への表示も、出力といえます。このような入出力処理を、Javaでは、ストリームという仕組みを介して行うのが基本です。ストリームとは、直訳すると「小さな川」という意味ですが、Javaではデータの流れとその通り道を意味し、データの受け渡しを抽象化したものです。あらゆるデータの入出力における基本的な概念です。ストリームの種類Javaのストリームには、ファイルやネットワークなどからデータを受け取る入力ストリームと、ファイルやネットワークにデータを送りだす出力ストリームの2種類があります。入出力とストリームまたストリームは、流れるデータの種類でも分かれています。バイト単位(バイナリ)でデータを扱うバイトストリームと、文字単位(16ビットのUnicode文字)でデータを扱う文字ストリームの2つに分かれます。通常のテキストなら文字ストリームとなり、画像データなどはバイトストリームを用います。したがって入出力の違いを合わせると、java.ioパッケージに含まれるストリーム関連クラスは、4つに区分できることになります。それぞれには、基本となる抽象クラスが存在し、ストリーム関連のクラスは、主にその抽象クラスを継承して作られています。主なストリームクラス文字ストリームの入出力は、Reader/Writerクラスが行います。バイトストリームの入出力は、InputStream/OutputStreamクラスが担います。これら4つのクラスがスーパークラスとなり、ファイルに特化した入出力クラスや、バッファ付きの読み書きをサポートするクラスなど、多くのサブクラスが提供されています。1.4からは、これまで説明してきたストリームによる入出力クラスに加え、より機能を拡張した新しい入出力ライブラリが導入されています。I/Oと呼ばれるもので、バッファ管理、ノンブロッキングI/O、文字セットや正規表現のサポートなどの機能が提供されています。SDKにも含まれています。NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Technologies。執筆コミュニティ「WINGSプロジェクト」代表。