You need to enable JavaScript to run this app. Java读取按空行分隔的文本文件,如何将分组数据整合后存入数组
优惠活动
大模型
产品
解决方案
定价
更多

Java读取按空行分隔的文本文件,如何将分组数据整合后存入数组

实现分组读取文件的修正方案

原有代码的问题

当前代码逐行读取后直接对单行内容做空格拆分输出,完全没有实现「按空行分组」的逻辑:

  • 没有把同一组内连续的非空行内容合并存储,导致每一行单独被打印成一个独立数组
  • 读到空行时没有触发组的输出动作,反而把空行本身做拆分打印,最终出现了多余的[]空数组输出

调整逻辑说明

实现预期效果只需要补充分组状态的维护逻辑:

  • 定义一个临时列表,用来存放当前分组下读到的所有非空行内容
  • 逐行处理文件内容:
    • 如果读到的行是有效非空内容,就加入临时列表
    • 如果读到的是空白行,就把当前临时列表的内容转为数组打印,清空临时列表准备接收下一组数据
  • 文件读完后,要检查临时列表里是否还有未输出的最后一组内容(避免文件末尾没有空行导致最后一组被遗漏)

修正后的完整可运行代码

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;

public class Main {
  public static void main(String[] args) {
    BufferedReader input;
    String inputLine;
    ArrayList<String> currentGroup = new ArrayList<>();
    try {
      input = new BufferedReader(new FileReader("test.txt"));
      while ((inputLine = input.readLine()) != null) {
        // 处理可能带首尾空格的伪空行
        if (inputLine.trim().isEmpty()) {
          // 遇到空行时,输出已攒够的分组
          if (!currentGroup.isEmpty()) {
            System.out.println(Arrays.toString(currentGroup.toArray()));
            currentGroup.clear();
          }
          continue;
        }
        currentGroup.add(inputLine.trim());
      }
      // 兜底处理文件末尾的最后一组内容
      if (!currentGroup.isEmpty()) {
        System.out.println(Arrays.toString(currentGroup.toArray()));
      }
    } catch (IOException e) {
      System.out.println(e.getMessage());
      System.exit(1);
    }
  }
}

运行输出效果

执行修正后的代码,得到的输出和预期完全一致:

[4234, Bob]
[6858, Joe]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 15:15:00