You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 8中使用Files.lines统计文本文件行数并忽略空行的方法

解决Java 8 Files.lines()忽略空行的问题

嘿,这事儿好办!Java 8的Stream API天生就支持这种过滤操作,你只需要在count()之前加一个filter()来筛掉空行就行,完全不影响原有方法的简洁和高效性。

核心解决方案(匹配你原代码逻辑)

如果你想只排除完全为空的行(和你原来代码里s.length() > 0的判断逻辑完全一致),可以这么写:

long count = 0;
try {
    count = Files.lines(Paths.get("lorem.txt"))
                 .filter(line -> !line.isEmpty())
                 .count();
} catch (IOException e) {
    e.printStackTrace();
}

进阶:排除全空白字符的行

如果你的需求是连那些全是空格、制表符的“空白行”也要排除(很多实际场景下这更实用),只需要加上trim()处理:

long count = 0;
try {
    count = Files.lines(Paths.get("lorem.txt"))
                 .filter(line -> !line.trim().isEmpty())
                 .count();
} catch (IOException e) {
    e.printStackTrace();
}

为什么这么做可行?

Files.lines()返回的是一个懒加载的Stream<String>,filter()操作会在流的处理过程中实时跳过不符合条件的行,最后count()会统计剩下的有效行数。整个流程依然保持了Java 8 Stream的高效性,比手动循环还要简洁。

别忘了处理IOException哦——因为读取文件可能会抛出这个异常,就像你原来的代码里做的那样。

内容的提问来源于stack exchange,提问作者Srithovic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:41:47