files.readstring() 是 java 11+ 读取文本文件的推荐方式,支持默认 utf-8 或指定编码(如 gbk),自动处理编码与资源关闭;java 8 需用 files.lines().collect() 但有资源泄漏风险。

Java 8+ 可以用 Files.readString() 一行读取整个文件内容(文本文件),前提是编码已知且文件不大。
一行读取文本文件(推荐,Java 11+)
Java 11 引入了更简洁安全的 API:
- Files.readString(Paths.get("file.txt")) —— 默认 UTF-8 编码
- Files.readString(Paths.get("file.txt"), StandardCharsets.GBK) —— 指定编码(如读取中文 Windows 文件)
✅ 优点:自动处理字符编码、关闭资源、异常简洁;❌ 注意:不适用于超大文件(会全加载进内存)。
Java 8 的“一行方案”(需配合 try-with-resources 简写)
严格说 Java 8 没有真正单行 API,但可压缩为逻辑上“一行”操作:
- String content = Files.lines(Paths.get("file.txt")).collect(Collectors.joining("\n"));
⚠️ 注意:这行代码默认 UTF-8,且 不会自动关闭流(Collectors.joining 不触发 close),存在资源泄漏风险。更稳妥的是用 try-with-resources 包一层,但就不是“一行”了。
读取时常见问题与建议
- 路径错误?优先用 Paths.get("src/main/resources/data.txt") 或 getClass().getResource("/data.txt").toURI() 定位类路径资源
- 乱码?明确指定编码,如 StandardCharsets.UTF_8 或 StandardCharsets.GBK
- 文件不存在或无权限?readString() 抛出 IOException,需 try-catch 或向上声明
不复杂但容易忽略编码和异常处理,日常小文件读取首选 Files.readString()。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











