2017-06-24 31 views
0

我有一个csv文件包含78400行(25MB)。如何使用java跳过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

请编辑您的问题,以显示您当前阅读和解析此文件的代码。 – Kenster

+0

为什么不修复文件? – Henry

+0

在目前的形式中,不清楚问题出现的原因。它必须位于您阅读文件的位置。所以请向我们展示'解析步骤'。你使用任何库进行解析?如何阅读专栏?你用','还是用'“......”'分开? – Zabuza

回答

0

你可以编写方法,将通过分割线进言检查,然后确定使用作为一个char

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

可以识别逃生和专门处理它\。

0

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

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