A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

6 个回复

倒序浏览
数据先输入到内存缓冲区里,在没有填满缓冲区,或者不调用flush()的情况下,数据并没有写入到磁盘中。
回复 使用道具 举报
guoyangpeng 来自手机 中级黑马 2015-5-17 08:16:13
藤椅
一楼正解,复习了!
回复 使用道具 举报
因为这是一个缓冲流,在使用缓冲流时,数据都是先放在缓冲区中,如果不手动 flush() 或者close() 或者缓冲区不满,数据是无法写到指定位置的,所以对于缓冲流,在最后最好要记得flush(),类似的缓冲流还有 PrintWriter,BufferedWriter。。。
回复 使用道具 举报
学习了!
回复 使用道具 举报
你写在内存缓冲里面 需要你刷新才会有  close();这个方法是先flush一下再关闭的  思考close()和flush()的区别
回复 使用道具 举报
数据先输入到内存缓冲区里,在没有填满缓冲区,或者不调用flush()的情况下,数据并没有写入到磁盘中。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马