OpenCsv报错:CsvMalformedLineException

本文讲述了在使用OpenCsv处理CSV文件时遇到的CsvMalformedLineException异常,分析了可能的原因,如逗号、空文本和引号导致的格式问题,以及编码格式不匹配。最后,作者推荐了使用RFC4180Parser进行更正格式的解析方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenCsv报错:com.opencsv.exceptions.CsvMalformedLineException

报错:com.opencsv.exceptions.CsvMalformedLineException: Unterminated quoted field at end of CSV line. Beginning of lost text: […]

//原代码
 public static void main(String[] args) {
        try (CSVReader reader = new CSVReader(new FileReader("path/to/your/csv/file.csv"))) {
            String[] nextLine;
            while ((nextLine = reader.readNext()) != null) {
                // nextLine[] is an array of values from the line
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

使用opencsv导入csv文件数据,出现该异常。查询各种ai和博客都没有解决方法

问题行是字符串文本包含逗号和空文本或者是单引号还是双引号,设置格式都无效

本来以为删除问题行会解决

但是删除后又报错:

cn.hutool.core.io.IORuntimeException: MalformedInputException: Input length = 1

搜索原因发现:是编码格式的问题,于是又修改编码格式,解决无果

CsvReader reader = CsvReader.builder()
        .charset(CharsetUtil.forName("UTF-8")) // 设置编码格式为UTF-8
        .file(ResourceUtil.getUtf8Reader("path/to/your/csv/file.csv")) // 替换为你的CSV文件路径
        .build();

CsvReader reader = CsvReader.builder()
        .charset(CharsetUtil.forName("GBK")) // 设置编码格式为GBK
        .file(ResourceUtil.getUtf8Reader("path/to/your/csv/file.csv")) // 替换为你的CSV文件路径
        .build();

没有用还是报错

回到问题本身(解决方式):

更改解析

RFC4180Parser rfc4180Parser = new RFC4180ParserBuilder().build();
                CSVReader reader = new CSVReaderBuilder(Files.newBufferedReader(Paths.get(path)))
                        .withCSVParser(rfc4180Parser)
                        .build();

参考博客:https://www.jb51.net/article/220711.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值