2013-04-03 107 views
0

我有一個包含14534個元素的字符串數組(在java中)。當我將它們寫入一個文件(csv)時,文件在13475個元素之後停止(在一行的中間,但沒有我能看到的特殊字符)。將字符串數組寫入文件

我用調試器檢查過,數組確實被填充了。

我應該用另一種方法嗎?在C++中,我會編寫二進制文件,但我不確定如何在java中執行此操作。這可能是一個問題,沒有被正確識別的字符串?

FileWriter writer = new FileWriter("out.csv"); 

for (int i = 0; i < lines; i++){ 
    for (int j = 0; j < cols; j++){ 
     // writer.append(""+i); 
     // writer.append("-"); 
     writer.append(""+numbers[j][i]); 
     writer.append(';'); 
    } 
    writer.append('\n'); 
} 

奇怪的是,如果我添加代碼來檢查行(在註釋中),它會進一步寫入大約12行。

有什麼建議嗎?

回答

3

你永遠不會關閉你的作家 - 我懷疑數據只是停留在緩衝區。

添加一個writer.flush()調用可能會向您顯示 - 但實際上您應該使用try-with-resources語句(如果您使用的是Java 7)或try/finally語句來始終關閉編寫器。

以及確保您將所有數據寫入文件,這意味着您還將釋放文件句柄...

+0

哇當然... – dorien

3

在檢查文件的內容之前沖洗和/或關閉寫入器。很可能不完整的輸出是由於緩衝。