-
Javaプログラムでファイルを読み込むときは、BufferedReaderクラスで用意されているreadLine()メソッドを使います。 BufferedReaderクラスは、FileReaderクラスを拡張する形で利用しますので、「java.io.File」、「java.io.FileReader」、「java.io.BufferedReader」をインポートする必要があります。 また、例外クラスとして、「java.io.IOException」をインポートする必要があります。
FileReaderクラスだけを使ってファイルを読み込むことも可能ですが、処理効率が非常に悪いので、BufferedReaderクラスを使うのが普通です。 FileReaderクラスでは、1文字単位でファイルを読み込みますが、BufferedReaderクラスを利用すると、行単位でまとめて読み込んで処理できます。
まず、「new File(読み込むファイル名)」で、Fileクラスのオブジェクトを作成します。 ファイル名は絶対パスで指定しても相対パスで指定しても構いませんが、拡張子まで記述してください。 絶対パスで指定する場合は、「new File("c:¥¥test¥¥ファイル名.txt")」の様に記述します。
次にFileReaderクラスをインスタンス化します。 このとき「FileNotFoundException」例外が発生する可能性がありますので、例外処理「try、catch」文の中でインスタンス化します。
次にBufferedReaderクラスをインスタンス化して、readLine()メソッドを実行します。 readLine()メソッドを実行すると、テキストファイルから1行分のテキストをまとめて読み込み、実行結果として改行を含まないString型の値を返します。
最後にBufferedReaderクラスのオブジェクトに対してclose()メソッドを実行してファイルを閉じます。 BufferedReaderクラスのオブジェクトに対してclose処理を行えば、その元になっているFileReaderクラスの方はcloseしなくても構いません。
サンプルソースコード import java.io.File; import java.io.FileReader; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.IOException; class sample { public static void main(String args[]) { if ( args.length == 0 ) { System.out.println( "パラメータが未指定" ); return; } // Fileクラスをインスタンス化 File file = new File( args[0] ); // ファイルが存在するかどうかを判定 if ( !file.exists() ) { // ファイルが存在しない場合は処理終了 System.out.println( "ファイルが存在しない" ); return; } // 指定されたパスがファイルかどうかを判定 if ( !file.isFile() ) { // ディレクトリを指定した場合は処理終了 System.out.println( "ファイル以外を指定" ); return; } // ファイルが読み込み可能かどうかを判定 if ( !file.canRead() ) { // ファイルが読み込み不可の場合は処理終了 System.out.println("ファイルが読み込み不可"); return; } try { // FileReaderクラスをインスタンス化 FileReader fr = new FileReader( file ); // BufferedReaderクラスをインスタンス化 BufferedReader br = new BufferedReader( fr ); String str = null; // ファイルを1行ずつ読み込む while ( ( str = br.readLine() ) != null ) { System.out.println( str ); } // ファイルを閉じる br.close(); } catch ( FileNotFoundException ex ) { System.out.println( ex ); } catch ( IOException ex ) { System.out.println( ex ); } } }
サンプルソースコードをコンパイルして、「sample.class」と同じフォルダに「test.txt」を作成します。 作成した「test.txt」の内容を編集します。 コマンドプロンプトで「java sample test」のようにパラメータを指定して実行すると、「test.txt」ファイルの内容が表示されます。
readLine()メソッドを使うとまずファイルの先頭の1行を読み込んでくれます。そして自動的に読み込む位置が次の行に移ります。 繰り返しreadLine()メソッドを実行することで、ファイルの先頭から最後まで順にテキストを読み込んでくれることになります。
「java.io.FileNotFoundException」は、「java.io.IOException」の下位クラスなので、明示的にインポートする必要はありませんが、サンプルソースコードではインポートしています。
サンプルソースコードには、exists、isFile、canReadなど様々なメソッドを記述しています。 各メソッドの動作についても確認してみてください。
上記を踏まえて、JavaのAPI「java.io.BufferedReader」を確認してみてください。 きっと、BufferedReaderクラスの使い方を理解できるでしょう。
トップページ » Javaプログラミング講座(応用編) » Javaプログラムでファイルを読み込む方法
-
-
- フェイスブック 若き天才の野望
- 発売:2011/01/13
- 定価:1,890円
- 著者:デビッド・カークパトリック
- 出版:日経BP社
内容:ユーザー数が5億人を超え、会社の時価総額が2兆円を超え、グーグルを驚かす存在となった、フェイスブック。同社を率いるマスコミ嫌いのCEO、マーク・ザッカーバーグからの信頼を勝ち得たベテラン記者が、徹底取材からフェイスブックの真実を初めて明かします。 -
- プログラマが知るべき97のこと
- 発売:2010/12/18
- 定価:1,995円
- 著者:和田 卓人
- 出版:オライリージャパン
内容:世界中で活躍するプログラマによる97本のエッセイを収録した書籍です。プログラミングにおいてもっとも重要な事柄は何か、バージョン管理やテスティング、設計原則とコーディングテクニック、また腕を磨くための勉強法などについて、経験豊かなプログラマが自らの体験を踏まえて解説します。 -
- Effective Java
- 発売:2008/11/27
- 定価:3,780円
- 著者:Joshua Bloch他
- 出版:ピアソンエデュケーション
内容:著者のGoogle, Sun Microsystemsにおけるソフトウェア開発で得た知識・経験をまとめています。Javaプログラミングをする全てのSE必読の書籍です。 -
- プログラミング言語Java
- 発売:2007/04
- 定価:4,410円
- 著者:ケン・アーノルド他
- 出版:ピアソンエデュケーション
内容:Javaの原典と呼べる本です。変数、コメント、定数、制御、クラス、配列、文字列、例外処理までわずか30ページで進むので、Javaを学習し始めたばかりの方には少し難しいかもしれません。厚さの割に価格も手ごろなので、Java使いなら本棚に置いておきたい本です。 -
- なぜ、あなたはJavaでオブジェクト指向開発ができないのか
- 発売:2004/12
- 定価:2,289円
- 著者:小森 裕介
- 出版:技術評論社
内容:Javaプログラミング言語習得において、新人プログラマーの最初の障害は「オブジェクト指向の壁」です。Javaのソフトウェア開発を中心に事業を発展させてきたSMG社の新人教育セミナーを加筆・書籍化したもので、大卒の新人に対して、ゼロからJava言語を教えてきた実績をフィードバックしています。 -
- もし高校野球の女子マネージャーがドラッカーの『マネジメント』を読んだら
- 発売:2009/12/04
- 定価:1,680円
- 著者:岩崎 夏海
- 出版:ダイヤモンド社
内容:ドラッカーとは、経営学者・社会学者であるピーター・ドラッカーのことです。突拍子のないことが書かれているので、息抜きに読んでみると面白いです。 -
- CPUの創りかた
- 発売:2003/10/01
- 定価:2,940円
- 著者:渡波 郁
- 出版:毎日コミュニケーションズ
内容:コンピューターの中核であるCPUの「超」基本原理から具体的な設計例までを解説。実際に作らない人も読み物としてタメになります。
-