據我所知,BufferedWriter存儲信息之前,我寫在文件執(zhí)行使用在文件中寫入它的行為之前flush(),Append()等等。我從多個來源收集信息,所以目前我正在做的是在每個來源中循環(huán)并每次將其直接附加到文件中,但我想要完成的是BufferedWriter在完成循環(huán)后添加所有信息,將它寫入文件,怎么做?我試圖通過不多次將數據刷新到文件中來提高性能。性能是問題,因為這可能會循環(huán) 100 萬次。這是我目前正在做的事情:打開 BufferedWriter從不同的源讀取數據并存儲在緩沖區(qū)中將存儲的數據附加到文本文件中(此處緩沖區(qū)已清空)重復步驟 2.- 和 3.- 50 次關閉文本文件這是我想要做的:打開 BufferedWriter從不同的源讀取數據并存儲在緩沖區(qū)中重復步驟 2.- 50 次附加所有收集的數據(在 50 個循環(huán)中收集的數據)關閉文件這是代碼。 for (int mainLoop = 0; mainLoop < 50; mainLoop++){ try { BufferedWriter writer = writer = new BufferedWriter(new FileWriter ("path to file in computer" + mainLoop + ".txt", true)); for(int forloop = 0; forloop < 50; forloop++) { final Document pageHtml= Jsoup.connect("link to a page").get(); Elements body = pageHtml.select("p"); writer.append(System.getProperty("line.separator")); writer.append(System.getProperty("line.separator")); writer.append(body.text()); System.out.println(forloop); } writer.close(); } catch (IOException e) { e.printStackTrace(); }continue; }
2 回答

HUH函數
TA貢獻1836條經驗 獲得超4個贊
我試圖通過不多次將數據刷新到 de 文件來提高性能
每次寫入后是否手動刷新數據?不要那樣做。
否則,在實例化 BufferedWriter 時指定更大的大小。
您可以選擇使用 StringBuilder 首先聚合輸出。但是,我假設您的輸出比您想存儲在內存中的要多。
最后,真的有性能成本嗎?
===
BufferedWriter 將優(yōu)化它執(zhí)行的實際寫入。只要您指定一個大的緩沖區(qū)大小,例如 10,000,在緩沖區(qū)滿之前,對緩沖區(qū)的多次小寫入將不會導致寫入。我看到一條評論說您正在“清除”緩沖區(qū)。不要那樣做。把 BufferedWriter 放在一邊,讓它做它自己的事。
如果您正在積累信息,然后由于某種原因將其丟棄,請使用 StringBuilder 積累,然后將 StringBuild 內容寫入 Writer。
添加回答
舉報
0/150
提交
取消