码迷,mamicode.com
首页 > 编程语言 > 详细

java写文件时,输出不完整的原因以及解决方法close()或flush()

时间:2015-08-12 01:10:51      阅读:503      评论:0      收藏:0      [点我收藏+]

标签:

在java的IO体系中,写文件通常会用到下面语句

 

BufferedWriter bw=new BufferedWriter(new FileWriter("sql语句.txt"));

用到这个的时候一定不能忘了他的伴侣代码。。

 

bw.close();

或者

bw.flush();


实际上,FileWriter在写文件时,会把内容存储到一块缓冲区中,当缓冲区满后,才会把缓冲区中的内容写入文件,内容再继续存到缓冲区,如此反复,而flush()会将内存中的内容强制写到文件中,即使内存没满。这就是为什么最后要调用一次fileWriter.close(),close()方法里面调用了flush(),这样就可以了。否则就会最后有少部分的内容缺失。特别是写小文件的时候,会出现文件空白,没有内容。
这个问题很常见,值得注意。

重源代码中可以看出,flush()中自动调用了close()

    public void close() throws IOException {
        try {
          flush();
        } catch (IOException ignored) {
        }
        out.close();
    }

  

java写文件时,输出不完整的原因以及解决方法close()或flush()

标签:

原文地址:http://www.cnblogs.com/langren1992/p/4722607.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!