言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Java辞典

  1. トップページ
  2. Java辞典
  3. Files.readString() / Files.readAllLines()

Files.readString() / Files.readAllLines()

対応: Java 11(2018)

ファイルの内容を文字列または行のリストとして一度に読み込むメソッドです(Java 11+)。Files クラスのユーティリティメソッドを使うことで、従来の BufferedReader よりも少ないコードで読み込みが完結します。

構文

// ファイル全体を文字列として読み込みます(Java 11+)。
String content = Files.readString(Path.of("ファイルパス"));

// ファイルの全行をリストとして読み込みます。
List<String> lines = Files.readAllLines(Path.of("ファイルパス"));

// ファイルの全行をストリームとして読み込みます(Java 8+)。
Stream<String> lineStream = Files.lines(Path.of("ファイルパス"));

// パスオブジェクトを作成します(Java 11+)。
Path path = Path.of("ファイルパス");

メソッド一覧

メソッド概要
Files.readString(Path)ファイル全体を UTF-8 文字列として読み込みます(Java 11+)。文字コードを第2引数で指定することもできます。
Files.readAllLines(Path)ファイルの全行を List<String> として読み込みます。行末の改行文字は含みません。
Files.lines(Path)ファイルの全行を Stream<String> として返します(Java 8+)。大きなファイルを遅延読み込みする場合に有効です。
Path.of(String)文字列からパスオブジェクトを作成します(Java 11+)。Paths.get() と同等です。

サンプルコード

sample_FilesReadstring.java
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;

class FilesReadstring {
    public static void main(String[] args) {
        // ファイル全体を文字列として読み込みます(Java 11+)。
        try {
            String content = Files.readString(Path.of("sample.txt"));
            System.out.println(content); // ファイルの内容が出力されます。
        } catch (IOException e) {
            e.printStackTrace();
        }

        // ファイルの全行をリストとして読み込みます。
        try {
            List<String> lines = Files.readAllLines(Path.of("sample.txt"));
            System.out.println("行数: " + lines.size());
            for (String line : lines) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // ストリームで処理します(大きなファイルに有効)。
        try (var stream = Files.lines(Path.of("sample.txt"))) {
            stream
                .filter(line -> line.startsWith("//"))
                .forEach(System.out::println); // コメント行だけ出力されます。
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
javac FilesReadstring.java
java FilesReadstring

概要

『readString()』と『readAllLines()』はファイル全体をメモリに読み込むため、数百MB以上の大きなファイルを読み込む場合はメモリ不足になる可能性があります。大きなファイルには『Files.lines()』または BufferedReader を使って1行ずつ処理してください。

『Files.lines()』は Stream を返すため try-with-resources で使用してください。ストリームを閉じないとファイルハンドルが解放されません。デフォルトの文字コードは UTF-8 ですが、異なる場合は第2引数に Charset(例: Charset.forName("Shift_JIS"))を指定します。

ファイルへの書き込みについては『Files.writeString() / Files.write()』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。