我正在尝试将文本写入文件,我注意到只有在使用close()关闭文件时才会写入文件。当文本非常小时,这不是问题。但是因为我确信我要写大量的文本来写,我不希望文本溢出我的主存。有没有更好的方法来做到这一点而不会溢出内存?
BufferedWriter outputHandle = new BufferedWriter(new FileWriter(file));
while(true)
{
try {
<DO SOME PROCESSING >
outputHandle.write(text);
} catch (Exception e) {
break;
}
}
答案 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()