Files.readString是Java 11引入的便捷方法,用于一行读取小文本文件为字符串,默认UTF-8编码、自动关流、仅抛IOException;适用于几MB内文件,超限易OOM。

Files.readString 是 Java 11 引入的便捷方法,专为快速读取小文本文件内容到字符串变量而设计。它自动处理字符编码、资源关闭和异常转换,一行代码即可完成过去需多步操作的任务。
核心用法:一行读取,自动解码
直接传入 Path 对象,返回完整字符串:
- 默认使用 UTF-8 编码(符合现代文本主流标准)
- 内部自动打开并关闭文件流,无需 try-with-resources
- 底层调用
StandardCharsets.UTF_8,不依赖系统默认编码
示例:
指定编码:兼容非UTF-8文件
若文件是 GBK、ISO-8859-1 等编码,可显式传入 Charset:
- 避免乱码,尤其处理中文旧配置文件或日志时很关键
- 推荐使用
StandardCharsets.GBK或Charset.forName("GBK")
示例:
String content = Files.readString(Paths.get("readme.md"), StandardCharsets.GBK);异常处理:简洁捕获常见错误
该方法只抛出 IOException(如文件不存在、无权限、磁盘满),不抛出运行时异常:
- 适合配合 Lambda 或工具方法统一处理
- 不必为
UncheckedIOException额外包裹 - 实际使用中建议至少捕获并记录 IOException
示例:
try {String json = Files.readString(Paths.get("data.json"));
} catch (IOException e) {
throw new RuntimeException("读取 data.json 失败", e);
}
适用边界:只用于“小文件”
官方文档明确建议仅用于几 MB 以内的文本文件:
- 整文件加载进内存,大文件易触发 OOM
- 不适用于日志分析、CSV 流式处理等场景
- 若不确定大小,可用
Files.size(path)先校验(注意符号链接)
安全检查示例:
long size = Files.size(Paths.get("log.txt"));if (size > 5_000_000) {
throw new IllegalArgumentException("文件过大,禁止用 readString");
}
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











