SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

作って覚えるJavaプログラミングのススメ

Java入門 (6) - テキストファイルアクセスと例外処理

作って覚えるJavaプログラミングのススメ 第6回


  • このエントリーをはてなブックマークに追加

今回は、ファイルアクセスについてです。まずは、もっとも基本となるテキストファイルのアクセスからやってみましょう。同時に、ファイルアクセスで必要となってくる「例外処理」についてもしっかり覚えておきましょう。

  • このエントリーをはてなブックマークに追加

はじめに

 ある程度の規模のプログラムを作るようになると、「データの保管」について考えるようになります。必要なデータや演算した結果などのデータをファイルに保存したり読み込んだりできるようになれば、応用の範囲もぐっと広がります。まずは基本である「テキストファイルのアクセス」から、その基本的な使い方を説明していきましょう。

対象読者

  • Javaに興味はある、けれどプログラミング経験がない、という人。
  • Javaに興味はある、けれど何から手をつければいいかわからない、という人。
  • Javaに興味はない、でも何でもいいからプログラミングをしたい、という人。

これまでの記事

ファイルのアクセスの基本

 データを保存したりどこかから取り出したりする手立ては、いろいろとありますが、その基本と言えば「ファイル」を利用するものでしょう。プログラミングでは、この種のファイルには2種類のものがあります。それは「テキストファイル」と「バイナリファイル」です。

 テキストファイルは、文字通りテキストが書かれているファイルのことです。これに対し、バイナリファイルというのはバイナリデータ(コンピュータが理解できる2進数の値によるデータ)を記述してあるファイルのことです。基本的に、テキストファイル以外のすべてのファイルはバイナリファイルだと考えていいでしょう。グラフィックなどのデータファイルもそうですし、EXEファイルもバイナリファイルの一種です。

 バイナリファイルは、そこに記述されているデータの意味がわからなければ使えませんし、そのためにはどういうデータ構造になっているか、詳しく理解していなければいけません。ですが、テキストファイルで使われるのはただのテキストなので、そうしたことを意識せずに使えます。プログラムで利用する各種の値は、ほとんどがテキストとして表現できるものでしょう。ですから、テキストファイルが利用できるようになるだけでも、ずいぶんとデータの保存や読み込みの力になってくれるはずです。

 Javaでは、ファイルアクセスに関係するクラスは、「java.io」というパッケージにまとめられています。この中で、テキストファイルのアクセスに関するものとしては以下のようなクラスがあります。

  • FileReader
  • テキストファイルからテキストを読み込むためのもの。
  • FileWriter
  • テキストファイルへの書き出しを行うためのもの。
  • BufferedReaderBufferedWriter
  • バッファ機能を提供するもの。

 テキストの読み書きは、java.ioパッケージの「Reader」「Writer」という抽象クラスを継承して作成されています。

 「FileReader」「FileWriter」が、ファイルへの読み書きを行うための機能を提供するクラスです。一応、これだけでファイルアクセスは行えます。しかし、これらに用意されている読み書きのメソッドは、実はあまり強力ではないのです。なにより、これらのクラスにはバッファリングの機能がありません。

 ある程度のバッファにまとめて読み込んだり書き出したりすることで、より効率的に読み書きできるようになります。この機能を持つのが「BufferedReader」「BufferedWriter」です。しかし、これらは逆に「ファイルに読み書きする」という機能はありません。これは「あるReader/Writerから送られてきた情報をバッファリングして送受する」ためのものなのです。

 「なんだって、Reader/Writer関係のものがたくさんあるのか? それより最初から全部用意されているものを用意すればいいじゃないか」――そう思われるかもしれません。ですが、こうして細かな機能ごとに複数のReader/Writerを用意することで、それを組み合わせてさまざまな処理を行えるようになるのです。例えば、ファイルアクセス用、ネットワーク経由のアクセス用というようにいつかのクラスがあれば、それにバッファ機能用のものを組み合わせることですべてのクラスでバッファリング処理ができるようになります。最初からすべての機能をもたせた巨大なクラスを作るより、はるかに軽量で小回りが利くのです。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
ファイルへの書き出し

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
作って覚えるJavaプログラミングのススメ連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2295 2008/04/10 17:08

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング