Files.readString是Java 11引入的简洁读取文本文件方法,一行代码自动以UTF-8读取小至中等文件;支持显式指定编码,需处理IOException;适用于≤几MB纯文本,不适用于大文件或流式处理。

Java 11 引入了 Files.readString,它是读取小到中等大小文本文件最简洁的方式——一行代码搞定,无需手动管理流或处理字符编码细节。
基本用法:一行读取整个文件
直接传入 Path 对象,方法自动以 UTF-8 编码读取全部内容并返回 String:
String content = Files.readString(Paths.get("data.txt"));
这是默认行为,隐式使用 UTF-8。如果文件是其他编码(如 GBK、ISO-8859-1),必须显式指定:
String content = Files.readString(Paths.get("log.txt"), StandardCharsets.GBK);
处理常见异常
readString 声明抛出 IOException,需捕获或声明。典型写法如下:
- 用 try-with-resources 不必要(该方法内部已自动关闭资源)
- 推荐直接 try-catch,尤其在不确定文件是否存在或权限是否足够时
- 避免忽略异常,至少打印日志或给出默认值
try {
String text = Files.readString(Paths.get("config.properties"));
System.out.println(text);
} catch (IOException e) {
System.err.println("读取文件失败:" + e.getMessage());
}
适用场景与注意事项
这个方法适合读取纯文本、内容不大的文件(建议 ≤ 几 MB)。它会一次性将全部内容加载进内存,因此:
- 不要用于超大日志文件或 CSV 导出数据(易触发 OOM)
- 不适用于需要逐行处理、过滤或流式解析的场景(应改用
Files.lines()或BufferedReader) - 路径支持相对路径、绝对路径,也支持
Class.getResource()获取的 jar 内资源(需先转为Path)
对比传统方式:为什么更推荐?
相比 JDK 8 的经典写法:
String content = new String(Files.readAllBytes(path), StandardCharsets.UTF_8);
readString 更直观、语义明确,且内部做了优化(如避免中间 byte[] 和 String 的重复拷贝)。它不是语法糖,而是标准库中更安全、更可读的首选方案。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











