84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
认证0级讲师
直接调用最外层的close()就可以了
update:
http://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html#close--
Closes the stream and releases any system resources associated with it
http://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#close--
就是一个链条 你关闭最外面的 最外面的关闭里面的 里面的关闭更里面的
当然你如果硬要说关闭可能失败 一定要finally一下我也没办法
如果这个问题是:BufferedReader关闭了,有必要关闭InputStreamReader和InputStream吗?,那这个问题还正常些........
Java的io包里面的stream和reader,都用的是装饰者模式。你只需要调用最外层装饰者的close方法,它就能将其所装饰的stream或者reader也一并关闭。
实在不行,打开BufferedReader的源代码看看close方法,就会发现它再这个方法里关闭了它所装饰的reader.
BufferedReader
再实在不行,推荐在下的拙作一篇,也许能解决你的疑惑《Java IO : 流,以及装饰器模式在其上的运用》
都要关的,按顺序一个个关,最好在finally中
finally{ try{ br.close(); isr.close(); is.close(); }catch(Exception e){ ...... } }
最先创建的最后关,最后创建的最先关
直接调用最外层的close()就可以了
update:
http://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html#close--
http://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#close--
就是一个链条 你关闭最外面的 最外面的关闭里面的 里面的关闭更里面的
当然你如果硬要说关闭可能失败 一定要finally一下我也没办法
如果这个问题是:BufferedReader关闭了,有必要关闭InputStreamReader和InputStream吗?,那这个问题还正常些........
Java的io包里面的stream和reader,都用的是装饰者模式。你只需要调用最外层装饰者的close方法,它就能将其所装饰的stream或者reader也一并关闭。
实在不行,打开
BufferedReader
的源代码看看close方法,就会发现它再这个方法里关闭了它所装饰的reader.再实在不行,推荐在下的拙作一篇,也许能解决你的疑惑《Java IO : 流,以及装饰器模式在其上的运用》
都要关的,按顺序一个个关,最好在finally中
最先创建的最后关,最后创建的最先关