如何在读取CSV文件时忽略包含空值的整行?(附Java代码示例)
解决CSV文件中包含空值行的忽略问题
当然有办法啦!你可以在解析每一行的时候,先检查拆分后的字段是否完整且无空值,这样就能直接跳过那些不符合格式的行。
你的CSV格式要求每行必须包含3个字段:person_number,name,age,像5,fee,这种行拆分后虽然数组长度是3,但第三个字段是空字符串,我们可以通过以下逻辑过滤掉这类无效行:
- 先确保拆分后的数组长度恰好为3(排除字段数量过多或过少的行)
- 检查每个字段的内容(可先去除首尾空格)都不为空
修改你的Java代码如下:
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) { // 可添加异常处理,比如打印错误行信息 System.err.println("解析行失败: " + line + ", 错误原因: " + e.getMessage()); } } // 不符合条件的行会直接被跳过,不加入empList }
额外说明:
- 用
trim()是为了处理字段仅含空格的情况(比如5,fee,),如果你的场景不需要考虑空格,可以去掉trim(),直接判断!employeeDetails[2].isEmpty() - 一定要给
try块补上catch逻辑,避免解析时出现异常导致程序崩溃 - 如果之后你的CSV出现更复杂的场景(比如字段内包含逗号),建议使用专门的CSV解析库(比如OpenCSV),不过针对你当前的简单需求,上面的代码完全够用
内容的提问来源于stack exchange,提问作者bharath s
相关产品推荐
相关产品推荐

