Java 读取文件为 String 的几种方法
在 Java 中,有几种常见的方法可以将文件内容读取为 String,以下是几种主要实现方式:
使用 Java 8 的 Files.readString() (最简单)
Java 8 引入了 Files.readString() 方法,这是最简洁的方式:
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
public class ReadFileToString {
public static void main(String[] args) {
try {
String content = Files.readString(Paths.get("path/to/your/file.txt"));
System.out.println(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 Files.readAllLines() 和 String.join()
如果文件很大,可以使用 readAllLines() 然后连接:
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
import java.util.List;
public class ReadFileToString {
public static void main(String[] args) {
try {
List<String> lines = Files.readAllLines(Paths.get("path/to/your/file.txt"));
String content = String.join("\n", lines);
System.out.println(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 BufferedReader (传统方式)
适用于所有 Java 版本:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadFileToString {
public static void main(String[] args) {
StringBuilder content = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new FileReader("path/to/your/file.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
content.append(line).append("\n");
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(content.toString());
}
}
使用 Scanner
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ReadFileToString {
public static void main(String[] args) {
try {
Scanner scanner = new Scanner(new File("path/to/your/file.txt"));
StringBuilder content = new StringBuilder();
while (scanner.hasNextLine()) {
content.append(scanner.nextLine()).append("\n");
}
scanner.close();
System.out.println(content.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
使用 Apache Commons IO (第三方库)
如果你已经在使用 Apache Commons IO,可以使用 FileUtils:
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class ReadFileToString {
public static void main(String[] args) {
try {
String content = FileUtils.readFileToString(new File("path/to/your/file.txt"), StandardCharsets.UTF_8);
System.out.println(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意事项
- 文件路径:确保路径正确,可以使用绝对路径或相对路径
- 字符编码:对于非 ASCII 字符,建议指定编码(如 UTF-8)
- 异常处理:文件操作可能抛出
IOException,需要适当处理 - 大文件:对于大文件,建议使用逐行读取的方式,避免内存问题
选择哪种方法取决于你的 Java 版本、项目需求和个人偏好,Java 8+ 推荐使用 Files.readString(),它最简洁且高效。
