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

使用OpenCSV的CSVReader读取CSV时出现报错,请求技术协助

解决OpenCSV读取CSV到数组的报错问题

先梳理下你代码里的几个核心问题,这些大概率是导致报错的直接原因:

1. 文件路径的转义错误

Java字符串里的反斜杠\是特殊转义字符,你写的"C:\Users\Documents\o.csv"会直接触发编译报错——因为\U、\D这类不是合法的转义序列,必须把路径里的反斜杠改成双反斜杠\\,或者直接用正斜杠/代替。

2. 语法低级错误

你的main方法里多了一对多余的大括号{,而且CSVReader实例化时把参数reader写成了reade...,这属于明显的拼写/语法失误,会导致代码无法正常编译运行。

3. CSV分隔符的潜在适配问题

你给出的CSV数据示例是1123, may4, 0021;3323;,这里同时出现了逗号和分号。如果默认用逗号作为分隔符,第三列的0021;3323;会被当成一个整体;如果你的实际需求是分号也要作为字段分隔符,那需要手动指定分隔符规则。


修正后的完整可运行代码

import com.opencsv.CSVReader;
import java.io.IOException;
import java.io.Reader;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

public class CsvToArrayHandler {
    // 修正路径转义问题,两种写法二选一都可以
    private static final String SAMPLE_CSV = "C:\\Users\\Documents\\o.csv"; 
    // private static final String SAMPLE_CSV = "C:/Users/Documents/o.csv";

    public static void main(String[] args) {
        // 用try-with-resources自动关闭资源,避免泄漏
        try (Reader reader = Files.newBufferedReader(Paths.get(SAMPLE_CSV));
             CSVReader csvReader = new CSVReader(reader)) {

            // 读取所有行到数组集合,每一行对应一个String数组
            List<String[]> allCsvRows = csvReader.readAll();
            
            // 遍历验证结果
            for (String[] row : allCsvRows) {
                System.out.printf("Date: %s, Sold: %s, Code: %s%n", row[0], row[1], row[2]);
            }
        } catch (Exception e) {
            // 打印异常堆栈,方便精准定位报错原因
            e.printStackTrace();
        }
    }
}

额外优化提示

如果你的CSV实际是用分号作为分隔符(或者需要混合处理逗号+分号),可以用CSVReaderBuilder自定义规则:

CSVReader csvReader = new CSVReaderBuilder(reader)
                        .withSeparator(';') // 指定分号为分隔符
                        .build();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:12:56