Java でのファイル読み取り
1. ファイルの読み取り
これまでのチャプターでは、ファイルの作成方法と書き込み方法について学習しました。
以下の例では、Scanner クラスを使用して、前のチャプターで作成したテキストファイルの内容を読み取ります。
実装例:
import java.io.File; // Fileクラスをインポート
import java.io.FileNotFoundException; // エラーハンドリング用の例外クラスをインポート
import java.util.Scanner; // テキストファイルを読み取るためのScannerクラスをインポート
public class ReadFile {
public static void main(String[] args) {
File myObj = new File("filename.txt");
// try-with-resources: Scannerは自動的にクローズされます
try (Scanner myReader = new Scanner(myObj)) {
while (myReader.hasNextLine()) {
String data = myReader.nextLine();
System.out.println(data);
}
} catch (FileNotFoundException e) {
System.out.println("エラーが発生しました。");
e.printStackTrace();
}
}
}出力結果:
Javaでのファイル操作はトリッキーかもしれませんが、十分に楽しいものです!解説
このプログラムは filename.txt という名前のファイルを開き、Scanner を使用して一行ずつ読み取ります。各行はコンソールに出力されます。もしファイルが見つからない場合、プログラムは代わりに「エラーが発生しました。」と出力します。
2. ファイル情報の取得
ファイルに関する詳細な情報を取得するには、File クラスの各種メソッドを使用します。
実装例:
import java.io.File; // Fileクラスをインポート
public class GetFileInfo {
public static void main(String[] args) {
File myObj = new File("filename.txt");
if (myObj.exists()) {
System.out.println("ファイル名: " + myObj.getName());
System.out.println("絶対パス: " + myObj.getAbsolutePath());
System.out.println("書き込み可能: " + myObj.canWrite());
System.out.println("読み取り可能: " + myObj.canRead());
System.out.println("ファイルサイズ(バイト): " + myObj.length());
} else {
System.out.println("ファイルが存在しません。");
}
}
}出力結果の例:
ファイル名: filename.txt
絶対パス: C:\Users\MyName\filename.txt
書き込み可能: true
読み取り可能: true
ファイルサイズ(バイト): 03. その他のファイル読み取り手法
Javaにはファイルを読み取るために使用できるクラスがいくつかあり、用途に応じて使い分けます。
- Scanner:シンプルなテキストの読み取りや、数値や単語を簡単にパース(解析)したい場合に最適です。
- BufferedReader:高速であり、一行ずつ読み取る機能に優れているため、大きなテキストファイルを扱う際に適しています。
- FileInputStream:画像、音声、PDFなどのバイナリデータを扱う場合や、生のバイトデータを完全に制御する必要がある場合に最適です。