ファイルを文字列に読み取る方法

JavaBeginner
オンラインで実践に進む

はじめに

データをファイルに保存することは、永続的な保存に役立ちます。Java では、ファイルを読み取るために使用できる 4 つのクラスがあります。FileReaderScannerFileInputStream、およびBufferedReaderです。これらのクラスは、java.ioパッケージの一部であり、Java におけるファイル操作に使用されます。

サンプル ファイルを作成する

読み取り用のサンプル .txt ファイルを作成しましょう。このファイルは任意のテキストエディタを使って作成でき、読み取りたい任意のデータを含めることができます。例:

This is the sample data stored in a file
Rahul:10025
Sohan:10026
Madan:10027
Jack:10028

必要なクラスをインポートする

ファイルを読み取り、その内容を文字列に変換するには、次のクラスをインポートする必要があります。

import java.io.*;

FileReader を使ってファイルを読み取る

FileReader クラスを使ってファイルからデータを読み取ります。FileReader クラスのオブジェクトはファイルの先頭を指します。ファイルの各文字を読み取るためにサイズ 1 のバッファを使い、それを String 変数に追加します。

try {
     // 手順 1: 新しい FileReader オブジェクトを作成する
     FileReader fr = new FileReader("path/to/your/file.txt");

     // 手順 2: ファイルの内容を保持する String 変数を作成する
     String fileData = "";

     // 手順 3: 読み取った各文字を保持する整数型変数を作成する
     int c;

     // 手順 4: ファイルの終端に達するまでファイルを読み続ける
     while ((c = fr.read())!= -1) {

         // 手順 5: 読み取った各文字を fileData 文字列に追加する
         fileData += (char) c;
     }

     // 手順 6: ファイルの内容を出力する
     System.out.println(fileData);

     // 手順 7: ファイルリーダーを閉じる
     fr.close();

 } catch (IOException e) {
     e.printStackTrace();
 }

Scanner を使ってファイルを読み取る

Scanner クラスを使ってテキストファイルからデータを読み取ります。テキストファイルをスキャナーの入力ソースとして提供する必要があります。その後、\\Z メソッドでスキャナーを区切り、一度にすべてのデータを読み取り、それを文字列に変換します。

try {
     File file = new File("path/to/file.txt");
     Scanner scanner = new Scanner(file);

     scanner.useDelimiter("\\Z");

     String fileData = scanner.next();
     System.out.println(fileData);

     scanner.close();
 } catch (FileNotFoundException e) {
     e.printStackTrace();
 }

FileInputStream を使ってファイルを読み取る

FileInputStream クラスを使って、ファイルから直接データをバイト配列に読み取ります。必要なサイズ(この例では 10 バイト)のバッファを作成して、ファイルから読み取ったデータを一時的に格納し、それを StringBuilder オブジェクトに追加します。最後に、StringBuilder オブジェクトの内容を String に変換するために toString() メソッドを使います。

try {
     File file = new File("path/to/file.txt");
     FileInputStream fileInputStream = new FileInputStream(file);
     byte[] buffer = new byte[10];
     StringBuilder stringBuilder = new StringBuilder();

     int length;
     while ((length = fileInputStream.read(buffer))!= -1) {
         stringBuilder.append(new String(buffer, 0, length));
     }

     String fileData = stringBuilder.toString();
     System.out.println(fileData);

     fileInputStream.close();

 } catch (IOException e) {
     e.printStackTrace();
 }

BufferedReader を使ってファイルを読み取る

BufferedReader クラスを使って、ファイルからデータを簡単に読み取ります。それは一度にすべてのデータを読み取り、その後 readLine() メソッドを使って 1 行ずつ出力することができます。

try {
     File file = new File("path/to/file.txt");
     BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
     String line;

     while ((line = bufferedReader.readLine())!= null) {
         System.out.println(line);
     }

     bufferedReader.close();

 } catch (IOException e) {
     e.printStackTrace();
 }

まとめ

この実験では、Java でファイルからデータを String に読み取る方法を学びました。これを達成する方法は複数あり、FileReaderScannerFileInputStream、および BufferedReader クラスを使用する方法が含まれます。これらの方法を自分で試して、それらがどのように機能するかと、特定のユースケースに最適なものは何かを理解するためにお勧めします。コードをテストし、テキストファイルのパスを確認することを忘れないでください。