2 回答

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

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊
緩沖寫入器將在您指示時(shí)刷新。并且任何時(shí)候緩沖區(qū)變滿。確定緩沖區(qū)何時(shí)變滿可能很棘手。真的,你不應(yīng)該關(guān)心。無論何時(shí)刷新,緩沖寫入器都將提高性能。相反,您的輸出代碼應(yīng)該BufferedWriter
像任何其他Writer
.
我還在您的代碼中看到您反復(fù)打開和關(guān)閉輸出文件。你幾乎肯定不需要這樣做。而是在程序的更高級別打開和關(guān)閉文件,因此它在每次迭代時(shí)都保持打開狀態(tài)。
添加回答
舉報(bào)