黑马程序员技术交流社区

标题: OutputStreamWriter为什么不调用flush()方法或者close()方法时就写不不进去? [打印本页]

作者: sss18310878521    时间: 2015-5-16 22:27
标题: OutputStreamWriter为什么不调用flush()方法或者close()方法时就写不不进去?
今天老师在课堂上讲了关于转换流OutputStreamWriter写入数据问题,如:
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream ("a.txt"))
  osw.writer("hello");
如果此时osw没用调用close()或者flush()方法,则这个字符串是写不进去的,谁能解答一下原因?

作者: cyr    时间: 2015-5-17 08:07
数据先输入到内存缓冲区里,在没有填满缓冲区,或者不调用flush()的情况下,数据并没有写入到磁盘中。
作者: guoyangpeng    时间: 2015-5-17 08:16
一楼正解,复习了!
作者: kingowe    时间: 2015-5-17 08:24
因为这是一个缓冲流,在使用缓冲流时,数据都是先放在缓冲区中,如果不手动 flush() 或者close() 或者缓冲区不满,数据是无法写到指定位置的,所以对于缓冲流,在最后最好要记得flush(),类似的缓冲流还有 PrintWriter,BufferedWriter。。。
作者: 喻忠航    时间: 2015-5-17 08:49
学习了!
作者: tanzhixue    时间: 2015-5-17 11:15
你写在内存缓冲里面 需要你刷新才会有  close();这个方法是先flush一下再关闭的  思考close()和flush()的区别
作者: 凉仁日记    时间: 2015-5-17 14:22
数据先输入到内存缓冲区里,在没有填满缓冲区,或者不调用flush()的情况下,数据并没有写入到磁盘中。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2