[转载]java中io流关闭的顺序
2016-02-24 19:58
429 查看
原文URL:http://blog.csdn.net/shijinupc/article/details/7191655
还是先看API
Closes this stream and releases any system resources associated with it. If the stream is already closed then invoking this method has no effect.
Throws:
关闭该流并释放与之关联的所有资源。在关闭该流后,再调用 read()、ready()、mark()、reset() 或 skip() 将抛出 IOException。关闭以前关闭的流无效。
[html] view plain copy
public void close() throws IOException {
synchronized (lock) {
if (in == null)
return;
in.close();
in = null;
cb = null;
}
}
一般情况下是:先打开的后关闭,后打开的先关闭
另一种情况:看依赖关系,如果流a依赖流b,应该先关闭流a,再关闭流b
例如处理流a依赖节点流b,应该先关闭处理流a,再关闭节点流b
当然完全可以只关闭处理流,不用关闭节点流。处理流关闭的时候,会调用其处理的节点流的关闭方法
如果将节点流关闭以后再关闭处理流,会抛出IO异常
还是先看API
void | close()Closes this stream and releases any system resources associated with it. |
close
void close() throws IOException
Closes this stream and releases any system resources associated with it. If the stream is already closed then invoking this method has no effect.
Throws:
IOException- if an I/O error occurs
关闭该流并释放与之关联的所有资源。在关闭该流后,再调用 read()、ready()、mark()、reset() 或 skip() 将抛出 IOException。关闭以前关闭的流无效。
[html] view plain copy
public void close() throws IOException {
synchronized (lock) {
if (in == null)
return;
in.close();
in = null;
cb = null;
}
}
一般情况下是:先打开的后关闭,后打开的先关闭
另一种情况:看依赖关系,如果流a依赖流b,应该先关闭流a,再关闭流b
例如处理流a依赖节点流b,应该先关闭处理流a,再关闭节点流b
当然完全可以只关闭处理流,不用关闭节点流。处理流关闭的时候,会调用其处理的节点流的关闭方法
如果将节点流关闭以后再关闭处理流,会抛出IO异常
相关文章推荐
- Java学习笔记(二):String
- JDK安装与环境变量配置
- java调用usb摄像头
- 如何获取SD卡的 剩余容量和总容量(Eclipse,studio如何导入现存的项目)
- JAVA求前一天的日期
- javaji基础x4
- elasticsearch客户端java包选型
- JavaSE程序分析002
- CocoaAsyncSocket 与 Java服务 交互
- JavaSE程序分析001
- struts2项目配置文件及处理流程
- Spring AOP实现日志服务
- Spring AOP与IOC以及自定义注解
- Java学习1
- struts2标签取值方式
- Thinking in Java---Concurrent包下的新构件学习+赛马游戏仿真
- Java中的线程池
- 【Java学习笔记】内部类
- Java对象初始化详解
- maven 工程启动找不到 Spring ContextLoaderListener 的解决办法