Java中嵌套的IO流关闭的问题

IO流关闭工具类 缓冲流关闭工具类 流关闭工具类 之前写了一个关于html写入文件并和服务器下的样式文件一起打包压缩下载的需求 其中有很多需要关闭流的地方,但是每次都需要嵌套很多try catch 所以想到干脆写一个工具类,简化流程 我只需要在finally中每次调用这个方法并且传入要关闭的流就可以了 话不多说,直接上代码,有不足的地方大哥们提出来一起探讨 package com.portal.util; import lombok.extern.slf4j.Slf4j; import java.io.Closeable; impor 阅读详情
先看一段代码:
            FileOutputStream out1 = new FileOutputStream("D:\\SingleTon.txt");
            ObjectOutputStream out2 = new ObjectOutputStream(out1);
            out1.close();//是否需要关闭内层的IO流?
            out2.close();

考虑一下,像这样的嵌套IO流,是否应该从内到外依次关闭呢?

答案是不需要!这些IO类都是JDK自带的,调用了最外层的close方法,其实是一层一层向内调用了最内层的IO类的close方法,这也就是装饰者模式。

当然你肯定想问,为什么我之前自内向外逐层关闭也不会抛出异常?

因为就算你对某个流重复关闭多次,也不会抛出异常。

淘宝/天猫商家必看:不懂技术也能搞懂的奇门对接原理与ERP/WMS联调避坑指南 本文为淘宝/天猫商家详细解析阿里奇门对接原理与ERP/WMS联调避坑指南,帮助不懂技术的商家轻松管理数据对接流程。通过标准化接口和安全传输,奇门解决了代运营店铺数据获取难题,提升发货效率。文章还提供了联调阶段的实用技巧和常见问题解决方案,助力商家高效完成系统对接。 阅读详情

相关推荐

S7-200 SMART Modbus RTU从站配置与调试实战指南

本文提供了一份详细的S7-200 SMART PLC配置为Modbus RTU从站的实战指南。内容涵盖从硬件基础、软件准备、指令库调用、核心编程到地址映射与调试排错的完整流程。重点解析了MBUS_INIT与MBUS_SLAVE指令的关键参数配置,并深入探讨了Modbus地址与PLC内部V存储区的对应关系,帮助工程师快速打通通讯链路,实现与上位机、触摸屏等主站设备的稳定数据交互。

potato的博客 756

java 嵌套流关闭_关于java IO嵌套流关闭问题

流的关闭在java language嵌套流中,不凡大众对关闭嵌套流均是由内而外的关闭,但是看如下jdk源码:/** %W% %E%** Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license t...

weixin_39866087的博客 343

Python + DeepSeek 完美结合:本地部署提效指南

随着生成式 AI 和深度学习技术的快速发展,如何将智能搜索工具与本地部署结合以提升效率成为了许多企业和开发者关注的重点。DeepSeek 是一款开源的智能搜索框架,结合 Python 的灵活性,能够实现高效、可靠的本地部署方案。本文将介绍如何通过 Python 和 DeepSeek 的完美结合,实现本地化部署并提升工作效率。通过将 Python 与 DeepSeek 结合,可以快速实现语义搜索的本地化部署,确保数据安全的同时提升工作效率。文件可直接作为 DeepSeek 的输入数据。

weixin_44872675的博客 1万+

JAVA IO 流的关闭顺序!

java中的各种流由于使用了装饰器实现,所以,有时候关闭需要调用好几个流的close()方法。 以前从老员工那里形成的习惯是,从后面的往前关,先关装饰器的,最后关最早的流。 上几天有个帖子里又说要反过来顺序关闭,有说关最里面一个,有说关最外面一个,公说公有理,今天我就来小小测试一下。 范围:局限在jdk官方提供的流,至于你自己实现的流有什么行为只有你知道。 测试结论

congcongsuiyue的专栏 3725

【面试经验】大疆笔试-计算机视觉算法B卷

3、a=np.random.randn(3,3) b=np.random.randn(3,1) ,那么c=a*b的维度应该是:*是元素乘法或者torch.mul,@才是矩阵乘法或者torch.matmul,不会触发广播机制;8、将分辨率降低一半时,精标定内参(fx、fy、cx、cy、k1、k2、k3)焦距、光心、畸变系数将分别变成(fx、fy、cx/2、cy/2、k1、k2、k3),只能搜到光心变成一半,畸变系数不变。12、KLT算法在频闪光源、重复纹理、高速机动、环境照度低的情况下效果显著下降。

litterfinger的博客 1448

动态博弈、威胁与承诺(博弈论入门学习笔记四)

0 动态博弈 动态博弈:行动有先后顺序,不同的参与人在不同时点行动,先行动者的选择影响后行动者的选择空间,后行动者可以观察到先行动者做了什么选择。例如下棋、消费者和商家讨价还价、谈婚论嫁、企业之间的价格战等等。 因此,为了做出最优的行动选择,每个参与人都应该思考:如果我如此选择,对方将如何应对?如果我是他,我将会如何行动?给定他的应对,什么是我的最优选择? 动态博弈中的战略:在博弈开始之前就...

stepho的博客 1万+

java 嵌套流关闭_Java流关闭总结

ava中流中引用close方法总结1.由Java.io包中的对象生成实例的close方法使用情况BufferedInputStream bis = new BufferedInputStream(new InputStreamReader(new FileInputStream()))BufferedInputStream类public voidclose()throwsIOException{b...

weixin_34672536的博客 1031

2022年8月27日全国青少年信息素养大赛Python编程小学组决赛真题+答案解析

2022年8月27日全国青少年信息素养大赛Python编程小学组决赛真题+答案解析

伶俐角少儿编程 454

Java学习(韩顺平670-675)

在我看来,我们在Java需要不断封包的原因就是为了使用不同类库中自己所需的方法,我们才要进行封装的,你怎么看?你好,什么叫做关闭外层流关于字符流要求 服务端/客户端TCP网络通信编程//●//应用案例4 TCPFileCopy,java//1.编写一个服务端,和一个客户端//2.服务器端在9999端口监听//3.客户端连接到服务端,发送一张图片e:\Iqie..png//4.服务器端接收到客户端发送的图片,保存到src下,发送"收到图片"再退出//5.客户端接收到服务端发送的"收到图片”,再退出

m0_62574889的博客 990

【Codecs系列】x265编码器(十二):子像素运动搜索

在基于块运动补偿的视频编码框架中,运动搜索是最为重要的环节之一,同时也是编码端最为耗时的模块。运动搜索包括整像素运动搜索和子像素运动搜索,其中整像素运动搜索已经有很多快速算法,比如经典的三步搜索法、菱形搜索、六边形搜索以及TZSearch等等;但子像素搜索的快速算法却比较少,本文主要讲解x265编码器中的子像素搜索方法以及相关的快速搜索方法。

优快云明星博主,认证博客专家,视频、Matlab领域优质创作者。 749

linux mmap系统调用

brk/mmap linux 提供了两个比较重要的系统调用brk 和mmap,用于向内核申请相应用户空间,内核会根据系统运行状态判定是否申请新的VMA来管理新申请的用户空间,brk和mmap在整个系统中都占有非常重要的地位。 brk()系统调用被gblic进行了进一步封装成malloc接口,用户层程序一般都是通过调用malloc,由glibc间接调用brk来向内核申请用户空间。brk申请的用户空间属于堆空间 mmap系统调用也可以向内核申请用户空间,不过与brk不同的师,mmap申请的空间属于mma.

weixin_42730667的博客 1277

Java IO流

我们可以用RandomAccessFile这个类,来实现一个多线程断点下载的功能,用过下载工具的朋友们都知道,下载前都会建立两个临时文件,一个是与被下载文件大小相同的空文件,另一个是记录文件指针的位置文件,每次暂停的时候,都会保存上一次的指针,然后断点下载的时候,会继续从上一次的地方下载,从而实现断点下载或上传的功能。如果文件不存在则会去创建文件,如果存在则不会创建。处理流:不直接连接到数据源或目的地,而是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。...

小鲁蛋的博客 995

解决com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60027, active 20, maxActive 20错误

全网详细解决com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60027, active 20, maxActive 20, creating 0, createErrorCount 24的错误

念兮为美 417

java 嵌套流 关闭_关于java IO嵌套流关闭问题

流的关闭在java language嵌套流中,不凡大众对关闭嵌套流均是由内而外的关闭,但是看如下jdk源码:/** %W% %E%** Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license t...

weixin_35555531的博客 423

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

关于java IO嵌套流关闭问题

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34284188的博客 600

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

记一次io流出现的问题和解决办法

用java中 file.delete()方法删不掉指定文件的解决方案 1.出现问题的业务逻辑 批量导入用户数据为一个压缩包,需要先将每一个用户数据导成excel放到服务器同意目录下,然后再将该目录进行压缩,然后再下载,最后将服务器上的压缩包和excel文件目录删除掉 问题就出现在删除excel文件的时候 2.file.delete()删不掉文件的原因 大致有两种可能 文件路径不正确 流没有关闭 3. 问题排查 首先排查路径名称是否错误,这个比较好排查(如果是路径问题,手动删除文件可以删除,我的是手动删

weixin_43150427的博客 476

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Java转换流深度解析:InputStreamReader与OutputStreamWriter原理及乱码解决

字符编码是文本处理的基础,它定义了字符与字节序列之间的映射规则。在Java IO体系中,字节流与字符流的分层设计导致直接处理文本时容易出现乱码,其根源在于编解码字符集不一致。转换流通过适配器模式在字节流与字符流之间建立桥梁,核心原理是依据指定字符集进行编码与解码,并借助内部缓冲区处理多字节字符的跨边界问题。显式指定字符集(如UTF-8)是避免平台依赖、保证跨系统数据一致性的关键。这一机制广泛应用于文件读写、网络通信、控制台交互等场景,是解决中文乱码、实现可靠文本传输的基石。

weixin_31714129的博客 195

解决多个io流需要关闭而重复嵌套try-catch-finally的问题

问题如图: 相信大多数人都见过如此状态,流多了需要层层关闭,需要层层加上try-catch,为保证下一个流能关闭又要加上finally,烦人!! 我们先来一个测试: public class Test { public static void main(String[] args) { try { ...

aodubi0638的博客 1585

java嵌套流关闭_在Java中关闭嵌套流和写入程序的正确方法

我通常做以下。首先,定义一个基于模板方法的类来处理try / catch混乱import java.io.Closeable;import java.io.IOException;import java.util.LinkedList;import java.util.List;public abstract class AutoFileCloser {// the core action cod...

weixin_39877504的博客 314

java 嵌套流关闭,在Java中关闭嵌套流和编写器的正确方法

Note: This question and most of its answers date to before the release of Java 7. Java 7 provides Automatic Resource Management functionality for doing this easilly. If you are using Java 7 or later y...

weixin_35891787的博客 214

java流的关闭_关于java中流关闭的问题

有如下代码:private static String extractContent(HttpResponse response) throws Exception {String htmStr = null;if (response.getStatusLine().getStatusCode() == 200) {if (response != null) {BufferedReader br ...

weixin_39766071的博客 292

java io流用法,分享 23周 Java 关于IO流部分用法

本文章基于本人工作中碰到一些IO流使用和分析(结合源码),基于JDK1.8。嵌套IO部分教程,需要按照顺序一个层一层关闭流FileInputStream fi;InputStreamReader ir;BufferedReader reader;try{File file = FileUtils.getFileObj(localPath, tbClearBatchFileLogDto.getRec...

weixin_42277672的博客 186

io流不关闭会怎么样_关闭IO流,你确定不试试trywithresources?

关注上方蓝字关注我们引入Java类库中有许多资源需要通过close方法进行关闭。比如 InputStream、OutputStream,数据库连接对象 Connection,MyBatis中的 SqlSession 会话等。作为开发人员经常会忽略掉资源的关闭方法,导致内存泄漏。根据经验,try-finally语句是确保资源会被关闭的最佳方法,就算异常或者返回也一样。try-catch-...

weixin_39634438的博客 1514

Java IO流未关闭导致的资源泄漏问题

每个打开的文件、套接字都会占用一个描述符,而系统对单个进程能打开的文件数有限制。虽然垃圾回收机制会回收对象,但GC的时机不可控,而且垃圾回收器不会主动调用close()方法。如果依赖finalize()方法,它的执行时机不确定,完全无法保证及时释放资源。简单来说,就是程序打开文件、网络连接、数据库连接等资源后,使用完毕没有正确关闭。在长时间运行的服务中,如果存在大量未关闭的IO流,最终会导致系统文件句柄耗尽,引发各种异常。这种写法最推荐,无论是否发生异常,流都会自动关闭,代码也更简洁。

2509_93946403的博客 283

java 嵌套流关闭_在Java中关闭嵌套流和写入器的正确方法[复制]

我通常做以下的事情。首先,定义一个基于模板方法的类来处理Try/Catch混乱import java.io.Closeable;import java.io.IOException;import java.util.LinkedList;import java.util.List;public abstract class AutoFileCloser {// the core action co...

weixin_36086687的博客 268
上一篇: 一些小细节让你的Java程序性能大幅提高
下一篇: 构造器中可要调用本类的方法,但要调用的非static方法必须声明为private或final
LiQiyaoo
博客等级 码龄11年 337粉丝 206原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值