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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. FileWriter fw = new FileWriter("buf.txt");
  2.                
  3.                 BufferedWriter bw = new BufferedWriter(fw);
  4.                
  5.                 bw.write("abcdefg");
  6.                 bw.flush();
  7.        
  8.                 bw.close();
复制代码
关闭缓冲区后,就直接把写入流也关闭了?就不用再fw.close()了?

9 个回复

倒序浏览
wf111sxwf 来自手机 中级黑马 2014-11-19 19:05:14
沙发
缓冲区的close方法就是调用流的close方法 那么必然不用再关闭流了。建议撸主多看看源码
回复 使用道具 举报
因为对象fw在缓冲区中,所以关闭缓冲区后fw也就自然关闭了。
回复 使用道具 举报
wf111sxwf 发表于 2014-11-19 19:05
缓冲区的close方法就是调用流的close方法 那么必然不用再关闭流了。建议撸主多看看源码 ...

对对对,应该看看源码。谢谢你!你学得不错哦!
回复 使用道具 举报
嗯是  缓冲器的关闭动作就是调用流的close.   视频里是这么说的
回复 使用道具 举报
恩,是的,其实关闭缓冲区就是在关闭缓冲区里的流,调用的方法就是流的关闭方法
回复 使用道具 举报
关闭缓冲流后,写入流也就关了,视频上老师这么说的
回复 使用道具 举报
pillar 中级黑马 2014-11-22 09:24:49
8#
嗯,后来我接着看视频,也明白透了,缓冲流就是对流进行了装饰,对其进行了功能增强,但实际上还是在调用流的一些方法。
回复 使用道具 举报
//jdk  BufferedWriter  close()源码
public void close() throws IOException {
        synchronized (lock) {
            if (out == null) {
                return;
            }
            try {
                flushBuffer();//close方法包含flush,所以close之前没必要flush啦。
            } finally {
                out.close();//调用write对象的close方法。
                out = null;
                cb = null;
            }
        }
    }
回复 使用道具 举报
quick3g 发表于 2014-12-3 19:35
//jdk  BufferedWriter  close()源码
public void close() throws IOException {
        synchronized (lo ...

谢谢你贴出来
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马