2017-09-02 41 views
-1

我正在使用以下代碼寫入文件,但在30MB,有時爲40MB或50MB之後,它會變得非常緩慢,並且需要很長時間。如何優化Java的BufferedWriter以保存到文件而不會減慢

public class FileClass { 
    public static BufferedWriter bw; 

    public static void WriteFile(String filename, String text) { 
    try { 
     bw = new BufferedWriter (new FileWriter("all.txt", true)); 
     bw.write(text); 
     bw.flush(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    } 
} 

我的電腦規格:戴爾Latitude E6420,8GBRAM,1TB硬盤,Windows 8.1。

我試過單獨使用FileWriter這是一樣的。我刪除了bw.close()調用,因爲如果包含它會更慢。沒有它,速度會更快,但在對文件進行一些寫入後會變慢。如果你們有一個片段,我可以使用寫入文件非常快速,而不會放慢速度......那太棒了!

+3

當然簡單的答案是:不要繼續打開它;不要繼續沖洗它。如果你想繼續刷新它,只需直接寫入'FileWriter',因爲在每次寫入時明確清空緩衝目的。 –

+0

它也可能與追求追求有關,你可以嘗試保留FileWriter或者使用文件滾動策略。 –

+0

我可以看看它是如何完成的請@安迪特納...謝謝 – PenDiv

回答

1

只要做@AndyTurner說。在您開始多次寫入操作之前打開文件,即在開始調用此方法之前;刪除flush();並在完成所有操作後關閉文件。這會使它快多倍。

+0

好的,但請如何執行該...我不認爲我知道如何。嘗試不同的方式,我不知道如何去做你告訴我的。請告訴我它是如何完成的。 – PenDiv

+0

我不明白你不明白的是什麼。它只是將代碼從內部移到外部循環。非常簡單。你沒有提供所有的代碼,但無論如何,它會要求別人太多地要求你爲你工作, – EJP

+0

這就是文件類中的所有代碼。它不在任何循環中 – PenDiv

相關問題