如何使用java跳过csv文件中的无效双引号字符行?

时间:2017-06-24 11:13:13

标签: java csv opencsv

我有一个包含78400行(25MB)的csv文件。

当我逐行读取csv文件时,1列在第2行有错误。

它包含反斜杠字符。

当我阅读本专栏时,它会将csv文件中的所有剩余列读作单列。

"CDE","456","6346","testdata2","MyData2","ClassB"
"ABC","123","4567\","testdata","MyData","ClassA"
"CDE","456","6346","testdata2","MyData2","ClassB"

如何在java中使用行分隔符跳过该行?

2 个答案:

答案 0 :(得分:0)

您可以编写方法,通过将行拆分为单词进行检查,然后识别\用作char

String line=br.readline();
String words =line.split(",");
char[] word=words.toCharArray();
boolean escape=(word=='\');

您可以识别逃生并特别处理它。

答案 1 :(得分:0)

如果您使用的是openCSV,那么只需使用反斜杠以外的转义字符定义解析器。如果您不想使用转义字符,可以使用ICSVParser.NULL_CHARACTER,或者如果您使用的是3.9版本的openCSV,则可以使用RFC4180Parser。

RFC4180ParserBuilder rfc4180ParserBuilder = new RFC4180ParserBuilder();
ICSVParser rfc4180Parser = rfc4180ParserBuilder.build();
CSVReaderBuilder builder = new CSVReaderBuilder(sr);
CSVReader reader = builder.withCSVParser(parser).build();