当前位置: 代码迷 >> J2SE >> 文件流close()方法使用的迷惑?该如何解决
  详细解决方案

文件流close()方法使用的迷惑?该如何解决

热度:284   发布时间:2016-04-24 13:25:24.0
文件流close()方法使用的迷惑?
《Java2核心技术第1卷》p573:当完成了对一个流的读取或者写入后,就应该调用close方法将它关闭,这样可以释放流所占用的操作系统资源。

问题:当我使用下述方法打开流时?
BufferedReader in = new BufferedReader (new FileReader (file.getPath()));

in.clse ()//在此关闭流,那么匿名的FileReader对向是否也自动调用了close()方法?还是直接交给了垃圾回收器去处理了?

FileReader fr = new FileReader (file.getPath());
BufferedReader br = new BufferedReader(fr);

fr.close()
br.close()//是这种方法好,还是上述方法好,还有关闭一个流时的这个顺序对吗?

------解决方案--------------------
其实在调用
BufferedReader in = new BufferedReader (new FileReader (file.getPath())); 

in.clse ()//这里已经调用了FileReader 的close()方法,所以你不用担心里面流的处理,BufferedReader 的close方法就是关闭里面那个FileReader 的流

下面你说的那种方法是不必要的,只要调用
br.close()就可以了

给你源码看吧
Java code
    // BufferedReader 的close方法,也就是关闭FileReader 的流public void close() throws IOException {    synchronized (lock) {        if (in == null)        return;        in.close();        in = null;        cb = null;    }    }
  相关解决方案