Edited at

【Java】テキストファイル全体を読み込み文字列を返すメソッド

More than 3 years have passed since last update.

すぐに使える用。ただし、インポート宣言とメソッド定義は適切な場所に記述しなければならない。

// インポート宣言

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

// メソッド定義
public static String readAll(String path) throws IOException {
StringBuilder builder = new StringBuilder();

try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
String string = reader.readLine();
while (string != null){
builder.append(string + System.getProperty("line.separator"));
string = reader.readLine();
}
}

return builder.toString();
}

JDK 8から追加されたStreamを使用することにより、コード量を半分ほど減らすことができました。

// インポート宣言

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

// メソッド定義
public static String readAll(String path) throws IOException {
return Files.lines(Paths.get(path))
.reduce("", (prev, line) ->
prev + line + System.getProperty("line.separator"));
}

【2016/06/06追記】

上記のメソッドで1MBのテキストファイルを読み込むと、20秒以上かかります。コメントでのご指摘にある次のメソッドが最も高速でした。100MBのテキストファイルを1.3秒程で読み込むことができます。

import java.io.IOException;

import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Collectors;

public static String readAll(final String path) throws IOException {
return Files.lines(Paths.get(path), Charset.forName("UTF-8"))
.collect(Collectors.joining(System.getProperty("line.separator")));
}