FileReader、FileInputStreamクラスとかあるけどどうやって使うの?
プロパティファイルを読み込むにはどうすればいいの?
エンコードを指定して読み込むにはどうすればいいの?
Javaではテキストファイルや画像を読み込んだり、プロパティファイル、文字コードを指定する方法など、ファイルを操作のためのクラスが用意されています。しかし、初心者にとってはファイルを読み込むにもいろいろ方法があったり、長ったらしい記述が必要で方法がよくわからない方も多いのではないでしょうか?
そこで、この記事ではファイルを読み込む4つの手順をそれぞれわかりやすく解説していきます。
- 【基礎】FileReaderクラスでファイルを読み込む方法
- 【基礎】FileInputStreamクラスでファイルを読み込む方法
- 【発展】プロパティファイルを読み込む方法
- 【発展】ファイルのエンコードを指定して読み込む方法
今回はそんなファイルの読み込み方法をわかりやすく解説します!
なお、Javaの記事については、こちらにまとめています。
Javaでファイルを読み込む4つの方法
ここではJavaでファイルを読み込む方法について、用途別に4つの方法を解説していきます。
FileReaderクラスで読み込む方法
FileReaderクラスとは
ファイルを読み込む基本的な方法として、FileRederクラスがあります。
FileRederクラスは、まずFileクラスのオブジェクト生成時にコンストラクタの引数に読み込むファイルを指定します。次にFileReaderクラスのオブジェクト生成時に、コンストラクタの引数にFileクラスのオブジェクトを指定します。
File file = new File("ファイル名"); FileReader filereader = new FileReader(file);
FileReaderクラスは、Fileクラスのオブジェクトを引数に指定したオブジェクトを生成すれば、ファイル読み込みの準備は完了です。
ファイル読み込み時の注意点として、指定したファイルが存在しなかった場合、FileNotFoundExceptionの例外が発生します。
そのため、例外処理やFileクラスのexistsメソッドで、予めファイルの存在有無を確認してからファイルを読み込むようにしましょう。
FileReaderクラスの使い方
ここでは、実際にfilereaderクラスを使用して、ファイルを1文字ずつ読み込む方法を紹介します。
読み込むファイルは、予め任意のディレクトリに用意しておきます。
import java.io.File; import java.io.FileReader; import java.io.IOException; public class Main { public static void main(String[] args) { try { //Fileクラスに読み込むファイルを指定する File file = new File("/Users/Shared/java/java.txt"); //ファイルが存在するか確認する if(file.exists()) { //FileReaderクラスのオブジェクトを生成する FileReader filereader = new FileReader(file); //filereaderクラスのreadメソッドでファイルを1文字ずつ読み込む int data; while((data = filereader.read()) != -1) { System.out.print((char) data); } //ファイルクローズ filereader.close(); } else { System.out.print("ファイルは存在しません"); } } catch (IOException e) { e.printStackTrace(); } } }
実行結果:
SAMURAI ENGINEER
ファイルを1文字ずつ読み込むことができました!
ここで紹介したFileReaderクラスやBufferedReaderクラスのreadLineメソッドを使用して、ファイルを1行ずつ読み込む方法については、以下の記事で詳しく解説しています。
FileInputStreamでbyte文字を読み込む方法
FileInputStreamとは
FileInputStreamクラスとは、ファイルの読み込みや書き込み、ファイルの作成などのさまざまなファイル操作を行うためのクラスです。
FileInputStreamクラスは、オブジェクト生成時にコンストラクタの引数にファイル名を指定します。
FileInputStream fs = new FileInputStream("ファイル名");
FileInputStreamクラスを使用すると、ファイルの内容はバイトストリームで読み込まれます。
FileInputStreamの使い方
以下にFileInputStreamクラスを使用して、ファイルをバイトストリームで読み込む方法を紹介します。
使用するファイルには”java”と記述しています。
import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { try { //読み込むファイルを指定 FileInputStream fs = new FileInputStream("/Users/Shared/java/java.txt"); InputStreamReader isr = new InputStreamReader(fs, "UTF-8"); //InputStreamReaderクラスのreadメソッドでファイルを1文字ずつ読み込む int data; while((data = isr.read()) != -1) { System.out.println(data); } isr.close(); } catch (IOException e) { e.printStackTrace(); } } }
実行結果:
106 97 118 97 10
ファイルをバイト文字で読み込むことができました!
紹介したFileInputStreamクラスの詳細や、バイトストリームを文字に変換する方法などについては、以下の記事で詳しく解説しています!
プロパティファイルを読み込む方法
プロパティファイルとは、Javaプログラムで使用する定数や既定値、プログラムから読み込むファイルのパスなどの必要な情報を記載しておくためのファイルです。
プロパティファイルを活用することで、定数や既定値、ファイルパスの内容に変更が生じた場合も、プログラムを直接編集せずにファイルのみの変更で対応することが可能です。
そんなプロパティファイルの作成方法や読み込み方法については、以下の記事で詳しく解説しています!
ファイルの文字コード指定
ファイルに記述されている文字列は使用するプラットフォームによって、文字コードが異なる場合があります。使用する環境によって適切に文字列を文字コード化する作業のことを、エンコーディングといいます。
例えば、Windowsで作成したプログラムをLinuxなどのOSで動かした場合、日本語などの文字列が文字化けしてしまう可能性があります。そのため、異なるOSやプラットフォームでは、環境に合わせてエンコーディングを行う必要があります。
エンコーディングを確認する方法、ファイルの文字コードを指定・読み込み・変更する方法については、以下の記事で詳しく解説しています!
ファイルの書き込み方法について知りたい方へ
ここでは、ファイルの読み込み方法についてご紹介しています。
ファイルの書き込み方法については、こちらで詳しく解説していますのでぜひ参考にして下さいね。
まとめ
ここでは、Javaでファイルを読み込むための基本的な方法や、プロパティファイルの作成・読み込む方法、ファイルのエンコーディングを指定して読み込む方法などについて紹介しました。
実際のシステムでファイルを読み込む処理はよく使用しますので、ぜひ覚えておきましょう。
もし、Javaでファイルを読み込む方法を忘れてしまったら、この記事を思い出してくださいね。