java读取文本文件应据文件大小、编码、jdk版本选择方式:小文件用files.readstring()(jdk11+);通用推荐bufferedreader+files.newbufferedreader()(jdk7+);小文件分析可用files.readalllines();函数式处理选files.lines();scanner和filereader已不推荐。

Java 读取文本文件内容,关键看文件大小、编码是否明确、是否需要逐行处理,以及你用的 JDK 版本。现代写法更简洁安全,老方式仍可运行但容易出乱码或资源泄漏。
小文件:一行代码读完(JDK 11+)
如果文件不大(比如配置文件、JSON、日志片段),直接用 Files.readString():
- 默认按 UTF-8 编码读取:
String content = Files.readString(Paths.get("config.txt")); - 指定 GBK 编码:
Files.readString(path, StandardCharsets.GBK) - 记得加 try-catch 处理
IOException,并提前检查文件是否存在、是否可读 - 不适用于几百 MB 的大文件,否则可能内存溢出
通用推荐:按行读取(JDK 7+)
最常用、最稳妥的方式是 BufferedReader + Files.newBufferedReader():
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 自动处理字符编码,支持 UTF-8、GBK 等任意
Charset - 配合 try-with-resources,流自动关闭,不用手动
close() -
readLine()每次返回一行(不含换行符),返回null表示结束 - 适合中大型文件,内存占用可控
一次性加载全部行(适合小文件分析)
用 Files.readAllLines() 得到 List<string></string>:
- 代码极简:
List<string> lines = Files.readAllLines(path, StandardCharsets.UTF_8);</string> - 内部仍是基于 BufferedReader,但会把所有行全载入内存
- 适合做简单统计、测试、配置解析等场景
- 同样不建议用于几十 MB 以上的文件
其他可用方式(按需选用)
还有几种补充方案:
-
Files.lines():返回
Stream<string></string>,适合配合 filter/map/collect 做函数式处理,也支持自动关流 - Scanner:适合边读边解析数字、按分隔符切字段,但对编码控制弱,不推荐作主读取方式
- FileReader + BufferedReader(旧写法):需手动指定编码(否则依赖系统默认,易乱码),且必须显式 close,已不推荐
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










