当前位置: 首页 > news >正文

网站建设技术参数/企业网站优化价格

网站建设技术参数,企业网站优化价格,北京住房丰台建设委网站首页,云主机wordpress问题:(1)JAVA的IO流使用了装饰模式,关闭最外面的流的时候会自动调用被包装的流的close()方吗?(2)如果按顺序关闭流,是从内层流到外层流关闭还是从外层到内存关闭?问题(1)解释:如下例子代码:FileInputStream…

问题:

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

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

问题(1)解释:

69c5a8ac3fa60e0848d784a6dd461da6.png

如下例子代码:

FileInputStream is= new FileInputStream(".");

BufferedInputStream bis= newBufferedInputStream(is);

bis.close();

从设计模式上看:

java.io.BufferedInputStream是java.io.InputStream的装饰类。

BufferedInputStream装饰一个 InputStream 使之具有缓冲功能,is要关闭只需要调用最终被装饰出的对象的 close()方法即可,因为它最终会调用真正数据源对象的 close()方法。

BufferedInputStream的close方法中对InputStream进行了关闭,下面是jdk中附带的源代码:

java.io.BufferedInputStream的api:

closepublic void close()throws IOException 关闭此输入流并释放与该流关联的所有系统资源。

69c5a8ac3fa60e0848d784a6dd461da6.png

因此,可以只调用外层流的close方法关闭其装饰的内层流,验证例子:

69c5a8ac3fa60e0848d784a6dd461da6.png

public static void main(String[] args) throwsException {

FileOutputStream fos= new FileOutputStream("d:\\a.txt");

OutputStreamWriter osw= new OutputStreamWriter(fos, "UTF-8");

BufferedWriter bw= newBufferedWriter(osw);

bw.write("java IO close test");

bw.close();

}

验证ok

69c5a8ac3fa60e0848d784a6dd461da6.png

问题(2)解释:如果不想使用(1)方式关闭流,可以逐个关闭流(可能大家比较习惯吧)

69c5a8ac3fa60e0848d784a6dd461da6.png

如下例子:

public static void main(String[] args) throwsException {

FileOutputStream fos= new FileOutputStream("d:\\a.txt");

OutputStreamWriter osw= new OutputStreamWriter(fos, "UTF-8");

BufferedWriter bw= newBufferedWriter(osw);

bw.write("java IO close test");//从内带外顺序顺序会报异常

fos.close();

osw.close();

bw.close();

}

报出异常:

Exception in thread "main" java.io.IOException: Stream closed

at sun.nio.cs.StreamEncoder.ensureOpen(StreamEncoder.java:26)

at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:99)

at java.io.OutputStreamWriter.write(OutputStreamWriter.java:190)

at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:111)

at java.io.BufferedWriter.close(BufferedWriter.java:246)

at com.my.test.QQ.main(QQ.java:22)

如下例子:

public static void main(String[] args) throwsException {

FileOutputStream fos= new FileOutputStream("d:\\a.txt");

OutputStreamWriter osw= new OutputStreamWriter(fos, "UTF-8");

BufferedWriter bw= newBufferedWriter(osw);

bw.write("java IO close test");//从外到内顺序关闭ok

bw.close();

osw.close();

fos.close();

}

验证ok

69c5a8ac3fa60e0848d784a6dd461da6.png

一般情况下是:先打开的后关闭,后打开的先关闭

另一种情况:看依赖关系,如果流a依赖流b,应该先关闭流a,再关闭流b

例如处理流a依赖节点流b,应该先关闭处理流a,再关闭节点流b

当然完全可以只关闭处理流,不用关闭节点流。处理流关闭的时候,会调用其处理的节点流的关闭方法

如果将节点流关闭以后再关闭处理流,会抛出IO异常;

http://www.lbrq.cn/news/1102087.html

相关文章:

  • 做桑拿网站犯法吗/福州seo推广外包
  • 四川省建筑施工企业特种作业人员/长沙网站优化推广
  • 重庆巨能建设集团网站/广州疫情防控措施
  • 中装建设官方网站/自媒体营销模式有哪些
  • 移动门网站建设/网络推广网络营销外包
  • 做彩票网站代理/哪里有竞价推广托管
  • 玉溪网站建设网站建设/网页生成
  • wordpress 发布时间不对/沧浪seo网站优化软件
  • wordpress 图片默认居中/杭州seo托管公司推荐
  • 国外优秀企业网站模板/seo基础培训机构
  • 洛阳响应式网站建设/百度官方app下载
  • 网站建设 技术/百度首页推广
  • 内地公司 香港服务器 经营性网站/怎么找百度客服
  • 网站建设流程图/seo黑帽技术工具
  • 济南制作网站制作公司策划/自己做网站需要什么条件
  • 在线建网站/seo外包 靠谱
  • 你认为什么是网络营销/谷歌seo和百度seo
  • 怎么做自己的淘宝客推广网站/公司想建个网站怎么弄
  • 真人做的免费视频网站/济南百度竞价
  • 超级工程网站建设上海中心大厦/百度会员登录入口
  • 我做的网站在手机里滑动怎么这里卡/免费的关键词挖掘工具
  • 如何识别网站建设/深圳网站seo外包公司哪家好
  • 网上注册公司需要上传哪些资料/seo 优化案例
  • 建新建设集团有限公司网站/专业的网站建设公司
  • 科技公司网站制作模板/最新新闻事件今天疫情
  • 厦门公司做网站/数据分析师资格证书怎么考
  • wordpress国人cms/网页搜索优化
  • 网站与数据库的联系/网络推广是干什么的
  • 网页游戏网站排行/2023第二波疫情已经到来了吗
  • 成都青羊网站建设/淘宝宝贝排名查询
  • 用 Jetpack Compose 写 Android 的 “Hello World”
  • TypeScript 中替代 Interface 的方案
  • ARM 学习笔记(三)
  • 语音识别技术:从声音到文字的 AI 魔法
  • 深入排查:编译环境(JDK)与运行环境(JRE/JDK)不一致时的常见 Java 错误及解决方案
  • 【Linux服务器】-zabbix通过proxy进行分级监控