首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

2012-01-14 
文件流close()方法使用的迷惑?《Java2核心技术第1卷》p573:当完成了对一个流的读取或者写入后,就应该调用clo

文件流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;    }    } 

热点排行
Bad Request.