如何在不等待文件关闭的情况下将文本写入文件

时间:2015-02-18 04:32:15

标签: java performance file file-io buffer-overflow

我正在尝试将文本写入文件,我注意到只有在使用close()关闭文件时才会写入文件。当文本非常小时,这不是问题。但是因为我确信我要写大量的文本来写,我不希望文本溢出我的主存。有没有更好的方法来做到这一点而不会溢出内存?​​

BufferedWriter outputHandle = new BufferedWriter(new FileWriter(file));

while(true)
{
    try {
        <DO SOME PROCESSING >
                outputHandle.write(text);
    } catch (Exception e) {
        break;
    }
}

3 个答案:

答案 0 :(得分:1)

缓冲区没有增长;它的目的是降低写入文件的成本:写一个字符和编写几千字节(在某些情况下,至少)一样昂贵,所以将数据保存在缓冲区中并且只在写入时#&# 39; s完全优化表现。

答案 1 :(得分:1)

BufferedWriter的默认缓冲区大小为8kb(private static int defaultCharBufferSize = 8192),但您可以使用public BufferedWriter(Writer out, int sz)构造函数更改缓冲区大小

虽然您可以使用BufferedWriter#flush,但它的使用可能会影响您的应用程序的性能(因为它可能会增加磁盘I / O ......但是,大多数操作系统会将其缓存为孔)。

我认为您过早地优化了您的解决方案,应该进行测试,看看它是否真的会成为一个问题。您甚至可能发现要增加缓冲区大小

答案 2 :(得分:0)

如@MadProgrammer所述,同花顺工作。

outHandle.flush()