2014-09-30 61 views
0

我嘗試使用OpenCSV從CSV文件導入記錄。我發現OpenCSV實際上錯過了我文件最後一行的一些條目。代碼如下。我知道我可以做一個writeAll操作。但我需要一些其他操作的單個行。我的文件中記錄的數量約爲56000。未完成OpenCSV導入

CSVReader reader = new CSVReader(new BufferedReader(new InputStreamReader(new FileInputStream(inputFile)))); 

CSVWriter writer = new CSVWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(path2+File.separator+fileName)))), ','); 

List<String[]> fileContents = new ArrayList<String[]>(); 
fileContents = reader.readAll(); 
for(int i=0; i<fileContents.size(); i++){ 
    String[] row = fileContents.get(i); 
writer.writeNext(row); 
+0

而不是'新建文件(路徑2 +文件。選擇器+文件名)'使用'新的文件(路徑2,文件名)'。這樣你就不會忘記添加分隔符。 – Tom 2014-09-30 07:55:02

回答

0

請檢查之前的缺失值,這些值中的一個具有一個逗號內側(即,「這是一個CSV值,用逗號裏面」)。

+0

沒有任何內容中沒有任何逗號。其實我試圖將這些條目分成10000個條目的小文件。但是在最後一行中的每個較小文件中都會漏掉一些條目。 – Abhiroop 2014-09-30 07:47:06

+0

是否有任何其他轉義字符(例如''等)在缺失值之前的值? 我在過去有類似的問題,並且原來csv文件中的值包含轉義字符, opencsv處理不好 – javaist 2014-09-30 08:29:59

+0

只有單詞,即使它存在,y也不會正確寫出最後一行嗎?我覺得它很奇特 – Abhiroop 2014-10-01 09:32:13

0

我想出了錯誤。我沒有關閉作家。 writer.close(); 並且文件被完全寫入。不知道爲什麼它沒有完成寫文件,否則。