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

  1. Java 11 でファイルから文字列を読み取るための Files.readString()
  2. Java8 でファイルを文字列に読み取るための Files.lines(file_path)
  3. Java 7 でファイルから文字列を読み込むには Files.readAllLines() を用いる。
  4. ファイルから文字列を読み取るための BufferedReader.readLine

ファイルの内容を読み込んで 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

Java8 でファイルを文字列に読み取るための 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

関連記事 - Java String

  • Java でバイト配列を文字列に変換する方法
  • 関連記事 - Java File

  • Java で文字列を分割する方法
  • comments powered by Disqus