「はじめてのJava」を卒業したあなたへ!
新しく開始したこの連載は、本サイトの連載「はじめてのJava」の続編に当たるものです。「はじめてのJava」で、Javaのごく基本となる部分について一通り覚えた、という皆さんに向けて、次のステップとなるものとして用意しました。いわば、「入門の次の入門」というわけです。
「はじめてのJava」では、Javaの基本的な機能と、「AWT」と呼ばれるGUIライブラリのごく基礎についてだけ、ざっと説明をしていました。これで、とりあえずウインドウやボタンを使った簡単なアプリケーションぐらいは作れるようになりました。が、本格的なプログラムを作成するためには、もっとさまざまな機能の使い方を身につけていかなければなりません。そこで、プログラムを作成する上で覚えておきたい重要な機能類について、毎回1つずつ取り上げ説明していくことにします。この連載を終える頃には、あなたのプログラミングの幅もぐっと広がっていることでしょう。
データアクセスとストリーム
さて、第1回目は「テキストファイル・アクセス」についてです。プログラムの中でさまざまなデータを扱う場合、データをどこからか読み込んできたり、プログラムの中で処理したデータをどこかに保存したりする必要が出てきますね。こうした場合、もっともよく使われるのが「ファイル」です。ファイルにデータを保存し、必要に応じてまたファイルから読み込む。これができるようになれば、データを扱ったプログラムが作れるようになります。
「テキストファイル」は、ファイルの基本中の基本ともいえるものです。文字通り、テキストを保存しているファイルのことですね。テキストだけしか保存できない、といっても、数字でも真偽値でも「文字」として保存することはできますし、たいていのデータはテキストとして表現することができます。テキストファイルが使えるだけで、たいていのデータは保存できるようになるものです。
Javaでは、ファイルアクセスは「ストリーム」と呼ばれるものを使って行います。ストリームというのは、いってみれば「データのやり取りを抽象化したもの」のことです。データを保存したり、どこからか取り出したりしたいときは、まずストリームというオブジェクトを用意し、そこにある機能を呼び出して操作を行うようになっています。
重要なのは、「ストリームの出口に何があるか、入り口側は知る必要がない」という点です。ストリームは1つでなく、その働きに応じてさまざまなものが用意されています。テキストファイルに保存するためのもの、バイナリファイルを読み込むためのもの、プログラムのメモリ内に保存するためのもの、ネットワーク経由でサーバプログラムに送るためのもの……こんな具合に、たくさんのストリームが用意されているのです。プログラマは、必要に応じて、使いたいストリームを用意し、それを利用します。そのストリームの先がなんにつながっているのか(テキストファイルなのか、メモリなのか、ネットワークの向こう側にあるサーバなのか)は、入り口側(つまりデータを送り出したり受け取るプログラム側)は知る必要はないのです。ただ、「どうすればデータをやり取りできるか」という手順さえ知っていれば、ちゃんとデータアクセスが行えます。
ストリームを通すことで、ファイルでもメモリでもネットワークでもまったく同じ感覚でデータをやり取りすることができる。 |