Files.lines()是最轻量推荐方式,一行代码统计行数且自动管理资源;需指定UTF-8编码并捕获IOException;大文件或需分类统计时应逐行处理。

用 Files.lines() 是最轻量、最推荐的方式,一行代码就能拿到行数,无需手动管理流和关闭资源。
直接统计总行数
Java 8+ 提供了简洁的流式 API:
- 调用
Files.lines(path)返回一个Stream<string></string> - 链式调用
.count()即可得到文件总行数(不含换行符本身) - 注意:该操作会消耗流,不能重复使用;若需同时统计字符数或单词数,应改用逐行处理
示例代码:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
处理编码与异常
默认按系统默认编码读取,容易在中文环境出错。建议显式指定 UTF-8:
- 用
Files.lines(path, StandardCharsets.UTF_8) - 整个操作需包裹在 try-catch 中,捕获
IOException - 避免用
FileReader+BufferedReader手动处理,易漏关流或忽略编码
大文件或需分类统计时换种方式
如果文件超大(如几百 MB),count() 虽快但无法中断或反馈进度;若还需区分空行、注释行等,则应逐行处理:
- 用 try-with-resources 包裹
Files.lines(),保证流关闭 - 用
.forEach()或.reduce()累加计数器,配合String::trim判断空行 - 对每行做
startsWith("//")或状态机识别/*...*/,实现有效代码行统计
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










