Java でファイルを文字列に読み込む方法

Rupam Yadav 2023年10月12日
  1. Java 11 でファイルから文字列を読み取るための Files.readString()
  2. Java 8 でファイルを文字列に読み取るための Files.lines(file_path)
  3. Java 7 でファイルから文字列を読み込むには Files.readAllLines() を使用する
  4. ファイルから文字列を読み取るための BufferedReader.readLine
Java でファイルを文字列に読み込む方法

ファイルの内容を読み込んで Java 文字列に変換する方法を紹介します。

以下は testFile.txt ファイルで、Java の文字列として読み込みたい内容が含まれています。

A B C D 1 2 3

Java 11 でファイルから文字列を読み取るための Files.readString()

Java 11 には、新しいメソッド Files.readString() が導入されています。これにより、多くのコードを記述せずに、ファイルを簡単に読み取ることができます。

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {
  public static void main(String[] args) {
    Path path = Paths.get("/Projects/testFile.txt");

    try {
      String content = Files.readString(path);
      System.out.println(content);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

出力:

A
B
C
D
1
2
3

Java 8 でファイルを文字列に読み取るための Files.lines(file_path)

Java 8 では Stream API が導入され、与えられたデータセットを様々な方法で処理するようになった。

java.NIO パッケージの一部であるクラス Files には lines() メソッドがあり、テキストファイルから Stream<String> または文字列のストリームを生成します。

Stream API を使ってファイルの内容を Java の文字列に変換してみましょう。

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {
    try {
      Path path = Paths.get("/Projects/testFile.txt");
      Stream<String> lines = Files.lines(path);

      String content = lines.collect(Collectors.joining(System.lineSeparator()));
      System.out.println(content);
      lines.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

出力:

A
B
C
D
1
2
3
注意

ストリームを使用した後は、必ずストリームを閉じることを忘れないようにしましょう。lines.close() に注意してください。

これは、内容が出力された後にストリームが閉じられるようにするものです。

Java 7 でファイルから文字列を読み込むには Files.readAllLines() を使用する

Java 7 が java.nio パッケージに新しいメソッドを導入するまでは、ファイルの読み込みは簡単ではありませんでした。それは Files.readAllLines() メソッドで、ファイルから文字列のリストを返します。各文字列はファイルの一行を表します。

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    try {
      Path path = Paths.get("/Projects/testFile.txt");
      List<String> contentList = Files.readAllLines(path, StandardCharsets.UTF_8);
      System.out.println(contentList);

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

出力:

[A, B, C, D, 1, 2, 3]

ファイルから文字列を読み取るための BufferedReader.readLine

また、入力ストリームからテキストを読み込む BufferedReader クラスを使ってファイルの内容を取得することもできます。

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) throws IOException {
    String path = "/Projects/testFile.txt";

    try (BufferedReader br = new BufferedReader(new FileReader(path))) {
      String line = br.readLine();
      StringBuilder sb = new StringBuilder();

      while (line != null) {
        sb.append(line).append("\n");
        line = br.readLine();
      }

      String fileAsString = sb.toString();
      System.out.println(fileAsString);
    }
  }
}

出力:

A
B
C
D
1
2
3
著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java String

関連記事 - Java File