問題:
Java 程式嘗試將CSV 指令其輸出檔遇到問題。並非所有寫入 BufferedWriter 的資料都會出現在輸出檔中。
詳細資料:
程式讀取超過 10,000 行的 CSV 文件,並產生 SQL 語句來插入資料到表中。但是,輸出檔案中途被截斷,最後一個不完整的語句缺少部分值。
程式碼:
// ... while((line = in.readLine())!= null) { String[] esa = line.split(","); sqlstr = "insert into nyccrash values ("+esa[0]+", "+esa[1]+", "+esa[2]+", "+esa[3]+", "+esa[4]+", "+esa[5]+", "+esa[6]+");\n"; out.write(sqlstr); } // ...
解:
出現此問題是因為在寫入過程中輸出緩衝區未刷新。 BufferedWriter 的預設緩衝區大小為 8192 個字符,足以容納多行。緩衝區滿後,直到手動刷新緩衝區後,資料才會寫入檔案。
為了確保所有資料都寫入輸出文件,需要明確關閉OutputStream,這會刷新所有剩餘資料緩衝區中的資料:
out.close();
關閉輸出流可以保證在程序退出之前將所有資料(包括部分語句)刷新到文件中。
以上是為什麼我的 BufferedWriter 沒有將所有資料刷新到輸出檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!