博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java IO包装流如何关闭
阅读量:6969 次
发布时间:2019-06-27

本文共 780 字,大约阅读时间需要 2 分钟。

hot3.png

Java IO包装流如何关闭

1、JAVA的IO流使用了装饰模式,关闭最外面的流的时候会自动调用被包装的流的close()方法?

2、如果按顺序关闭流,是从内层流到外层流关闭还是从外层到内存关闭?

BufferedInputStream.close()方法

public void close() throws IOException {      byte[] buffer;      while ( (buffer = buf) != null) {          if (bufUpdater.compareAndSet(this, buffer, null)) {              InputStream input = in;              in = null;              if (input != null)                  input.close();              return;          }          // Else retry in case a new buf was CASed in fill()      }  }

可以上述代码可以看出,BufferedInputStream.close()方法调用了input.close()方法。

JAVA的IO流使用了装饰模式,关闭最外面的流的时候会自动调用被包装的流的close()方法。

  • 一般情况下是:先打开的后关闭,后打开的先关闭。
  • 另一种情况:看依赖关系,如果流a依赖流b,应该先关闭流a,再关闭流b,
    当然完全可以只关闭处理流,不用关闭节点流。处理流关闭的时候,会调用其处理的节点流的关闭方法

转载于:https://my.oschina.net/u/1425545/blog/799351

你可能感兴趣的文章
python学习三:列表、元组、字典、集合
查看>>
Netty 框架总结「ChannelHandler 及 EventLoop」
查看>>
Linux 下启动 Tomcat 抛出Can't connect to X11 window server 问题的解决方法
查看>>
Hexo博客NexT主题美化之显示当前浏览进度
查看>>
java版b2b2c社交电商spring cloud分布式微服务(七)springboot开启声明式事务
查看>>
品质生活正式开启,欧普照明&华为智选再创智能家居里程碑式突破
查看>>
【本人秃顶程序员】分库分表怎么才能无限扩容,看这篇文章就对了
查看>>
迁移潮来袭!数十个项目宣布即将停止支持 Python 2
查看>>
Javascrip—装饰器(7)
查看>>
Java 11 已发布,String 还能这样玩!
查看>>
(一)java版电子商务spring cloud分布式微服务b2b2c社交电商-服务的注册与发现(Eureka)...
查看>>
使用DataV制作实时销售数据可视化大屏
查看>>
Hello Juejin
查看>>
AndroidStudio导入或者新建项目一直build
查看>>
laravel项目
查看>>
Azure 文档 (SQL 数据仓库, Azure SQL 数据库文档)
查看>>
基于arm的多路温度采集控制系统(4)菜单界面
查看>>
大数据存储管理大趋势
查看>>
我的友情链接
查看>>
R478规划及实施—理想丰满、现实骨感
查看>>