2017-09-02 200 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

相关问题