2017-06-24 60 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(); 
相關問題