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

如何在读取文件时忽略含空值的整行?附Java代码示例

解决CSV空值行忽略问题

当然有办法处理这种情况!你现在的代码会因为空值行出现数组越界或者无效数据的问题——比如像5,fee,这种行,用split(COMMA_DELIMITER)拆分后虽然数组长度是3,但最后一个元素是空字符串,不符合你要忽略整行的需求;如果是5,,20这种中间字段为空的行,同样需要过滤掉。

我们可以通过增加行有效性校验逻辑来实现忽略空值行,具体调整如下:

  • 首先确保拆分后的数组长度严格等于3(对应你的CSV固定格式person_number,name,age三个字段)
  • 然后检查每个字段都不为空字符串(如果需要的话,还可以加上trim()过滤纯空白的情况)

修改后的代码片段如下:

while (((line = br.readLine()) != null)) {
    String[] employeeDetails = line.split(COMMA_DELIMITER);
    // 校验行有效性:字段数正确且所有字段非空
    if (employeeDetails.length == 3 
        && !employeeDetails[0].trim().isEmpty() 
        && !employeeDetails[1].trim().isEmpty() 
        && !employeeDetails[2].trim().isEmpty()) {
        try {
            ADInputFile emp = new ADInputFile(employeeDetails[0], employeeDetails[1], employeeDetails[2]);
            empList.add(emp);
        } catch (Exception e) {
            // 可选:处理其他异常,比如age不是数字的情况
            System.out.println("处理行失败: " + line + ", 错误信息: " + e.getMessage());
        }
    }
    // 不符合校验条件的行会被自动跳过
}

额外提示:

如果你的CSV后续可能出现带逗号的字段(比如"Smith, John",25),简单的split(",")会拆分错误,建议使用成熟的CSV解析库(比如OpenCSV),它能正确处理带引号的特殊字段,避免出现意外的拆分问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:57:01