我試圖從一個ArrayList的元素寫入文本文件。我的BufferedWriter代碼如下(與實際文件路徑):BufferedWriter不寫整個文件 - 只有一部分
Path file = Paths.get("(filepath)");
BufferedWriter writer = Files.newBufferedWriter(file, Charset.forName("US-ASCII"));
for (int j = 0; j < 100000; j++) {
writer.write(Integer.toString(radicalsAndPositions.get(j).get(0)) + "," + Integer.toString(radicalsAndPositions.get(j).get(1)) + " , " + "\n");
}
該ArrayList充滿達100,000元件,並生成一個文件,而是從端錯過值。當我將'j'限制爲10,000時,我只能得到生成的第一批9170行。在全部10萬條的情況下,我只獲得了99250條線。
將'j'限制爲1000會給我一個空文件。
該文檔生成正確,正確的元素,它只是過早地結束。爲什麼是這樣,我該如何解決它?
是否有原因如果沒有結束,它只會部分寫入? – Useablelobster
BufferedWrite的概念是緩衝。當緩衝區滿時它會刷新並減少單獨的IO操作的數量。當你調用flush和關閉writer時,它也會刷新。 – Thomas
是的,肯定是有原因的。它關閉您正在編寫文件的當前流。它需要被關閉,以反映你在一個文件中所做的改變。它也刷新流。 – Prasad