java bufferedwriter flush 必要性问题

很多帖子说bufferedWriter关闭前必须执行flush才能把进行写操作,但实验的结果并不是如此,个人觉得跟缓冲区尺寸有关,望高人解答,到底什么时候必须使用flus... 很多帖子说bufferedWriter关闭前必须执行flush才能把进行写操作,但实验的结果并不是如此,个人觉得跟缓冲区尺寸有关,望高人解答,到底什么时候必须使用flush什么时候可以不用。具体风险如何?

代码如下:
private boolean writeFileByLine()
{
File file= new File("d:\\123.conf");
if (file.exists())
{
file.delete();
}
BufferedWriter output;
try
{
output = new BufferedWriter(new FileWriter(file));
output.write("restrict adsfasdfignore");
output.newLine();
output.write("restrict " + "asdfasdfasdf");
output.newLine();
output.write("restrict adfdsfasdfas");
output.newLine();
output.write("restrict adsfsdafsadf adfad");
//关闭前必须的操作?
//output.flush();
output.close();
}
catch (IOException e)
{
e.printStackTrace();
}
return true;
}
API我看过的 并且 API也明确说close前要先执行flush 很多有关Writer类使用的帖子也都要求close前flush

现在问题是从我的程序来看似乎并没有这个必要。我尝试修改过缓冲区大小,成倍增加写入字符数量,都对程序没有任何影响。 那么具体那种场景必须要使用flush呢? 如果说Close前会自动执行flush那为什么API还要专门再强调一下? 希望能给出完整一些,深入一些的答复,谢谢大家。
展开
 我来答
奋斗xiao蜗牛
推荐于2016-04-12 · TA获得超过194个赞
知道答主
回答量:58
采纳率:0%
帮助的人:80.8万
展开全部
public class BufferedWriterextends Writer将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。

flush是刷新该流的缓冲,就是将缓冲区里的内容全部刷出去, 这与大缓冲区大小无关。而该类提供的 newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性 line.separator 定义。并非所有平台都使用新行符 ('\n') 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。

以上主要来自java api
Foxcoming
2009-08-13 · TA获得超过692个赞
知道小有建树答主
回答量:718
采纳率:0%
帮助的人:813万
展开全部
Close的时候会执行Fluah
不需要单独flush
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式