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
相关产品推荐
相关产品推荐

