Java 11 的 Files.readString() 一行读取小型文本文件,默认 UTF-8 编码,支持指定 Charset,但仅适用于数 MB 内文件,大文件需用 Files.lines() 或 BufferedReader。

Java 11 引入了 Files.readString(),它让读取小型文本文件变得非常简洁——无需手动打开流、处理编码、关闭资源,一行代码即可拿到全部内容。
基本用法:默认 UTF-8 编码读取
最常见场景是读取 UTF-8 编码的文本文件(如 .txt、.json、.properties):
String content = Files.readString(Paths.get("data.txt"));
该方法默认使用 StandardCharsets.UTF_8,适用于绝大多数现代文本文件。若文件路径不存在或不可读,会抛出 IOException,需捕获处理。
指定字符编码读取非 UTF-8 文件
当文件使用 GBK、ISO-8859-1 等其他编码时,传入对应 Charset 即可:
立即学习“Java免费学习笔记(深入)”;
Files.readString(path, StandardCharsets.GBK)Files.readString(path, Charset.forName("GBK"))-
Files.readString(path, Charset.defaultCharset())(读取系统默认编码)
适用边界:只推荐用于“小型”文本文件
readString() 会将整个文件一次性加载进内存,因此仅适合内容不大的文件(通常建议 ≤ 数 MB):
- 适合:配置文件、日志片段、JSON 小数据、模板文本
- 不适合:几百 MB 的日志、大型 CSV 或 XML 文件——容易触发
OutOfMemoryError - 替代方案:大文件请用
Files.lines()流式处理,或BufferedReader逐行读取
异常处理与路径安全建议
生产代码中应显式处理异常,并校验路径有效性:
try {
Path path = Paths.get("config.json");
if (Files.isRegularFile(path) && Files.isReadable(path)) {
String json = Files.readString(path, StandardCharsets.UTF_8);
// 处理内容
}
} catch (IOException e) {
// 记录日志并处理错误,例如:文件不存在、权限不足、编码不匹配
logger.error("Failed to read file: " + e.getMessage(), e);
}
注意:Files.readString() 不支持自定义行终止符或跳过 BOM,如有 BOM 需要自行截断(例如用 content.stripLeading() 简单处理 UTF-8 BOM)。


















