【发布时间】:2021-05-05 18:20:29
【问题描述】:
我有一个我无法解决的错误,我使用 Apache Commons 读取我的 CSV 文件,但是有一行包含一个带双引号的字符串,它不是分隔符,它是字符串的一部分,我想要一个替代方案来摆脱应用程序给出的错误。这是代码和错误。
Reader in = Files.newBufferedReader(Paths.get(nomeArquivoCorretores), Charset.forName("ISO-8859-1"));
Iterable<CSVRecord> records = CSVFormat
.newFormat(',')
.withQuote('"')
.withEscape('\\')
.withHeader(cabecalhoCorretores)
.withTrailingDelimiter()
.withQuoteMode(QuoteMode.ALL)
.parse(in);
for (CSVRecord record : records) {
try { ... }
我在尝试遍历 csv 可迭代列表时遇到此类错误。
java.lang.IllegalStateException: IOException reading next record: java.io.IOException: (line 1) invalid char between encapsulated token and delimiter。
它理解为好像双引号是一个分隔符,但它是字符串的一部分并且正在破坏算法过程
【问题讨论】:
-
你能edit你的问题并添加示例输入吗?确切的错误信息? (minimal reproducible example 大大增加了你得到答案的机会。)只是猜测:听起来你有一个损坏的 CSV 文件,其中的字段没有转义 properly。如果是这种情况,请与生成该文件的人核实。
-
Robert 我编辑了问题,执行代码时仍然出现错误。
-
导致错误的输入行是什么?
-
86954708000105,"LOPES "G" ADMC.CORRETORA DE SEGUROS LTDA",PJ, ,0,Suspenso,,,,
标签: java runtime-error java-11 apache-commons