files.readstring是java 11引入的一次性读取文本文件为字符串的便捷方法,默认utf-8编码,支持显式指定charset,抛出ioexception及其子类,适用于中小文件,自动资源管理。

Files.readString 是 Java 11 引入的便捷方法,用于**一次性读取整个文本文件为字符串**,底层自动处理字符编码、资源关闭和异常转换,比传统 BufferedReader 或 Scanner 更简洁安全。
基本用法:默认 UTF-8 编码读取
最简单的调用只需传入 Path 对象:
import java.nio.file.Files;
import java.nio.file.Path;
String content = Files.readString(Path.of("data.txt"));
该方法默认使用 UTF-8 编码,适用于绝大多数现代文本文件。若文件实际编码不是 UTF-8(如 GBK、ISO-8859-1),会乱码,此时需显式指定编码。
指定字符编码读取非 UTF-8 文件
通过第二个参数传入 Charset,避免乱码:
Files.readString(Path.of("readme.txt"), StandardCharsets.GBK)Files.readString(Path.of("log.txt"), Charset.forName("ISO-8859-1"))
注意:不要用 "GBK" 这样的字符串直接传参——readString 没有 String charsetName 重载,必须用 Charset 实例。
异常处理要点
该方法声明抛出 IOException,需捕获或声明:
- 文件不存在 → 抛出
NoSuchFileException(是IOException子类) - 无读取权限 → 抛出
SecurityException或AccessDeniedException - 磁盘 I/O 错误 → 抛出通用
IOException
推荐用 try-catch 包裹,或在方法签名中 throws,不建议忽略异常。
适用场景与注意事项
适合读取中小规模文本文件(通常建议 ≤ 几十 MB),因为内容会全部加载进内存:
- ✅ 配置文件、JSON/HTML 片段、日志快照、模板文本
- ❌ 不适合超大日志、导出数据文件等流式处理场景
- ⚠️ 不支持按行处理或部分读取,如需逐行处理,请用
Files.lines()或BufferedReader
它内部已自动使用 try-with-resources 关闭通道,无需手动管理资源,也不用担心文件句柄泄漏。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











