java中io各种流的关闭顺序

2023-11-08

还是先看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]
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异常


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中io各种流的关闭顺序 的相关文章

  • 数组查找时间复杂度和。它是如何存储的

    众所周知 通过索引访问数组的时间复杂度是O 1 Java 的文档ArrayList 它由数组支持 对其也有同样的说法get手术 size isEmpty get set iterator 和 listIterator 操作以恒定时间运行 查
  • Spring Batch如何作为Reader读取多个表(查询)并将其写入平面文件写入

    在我的项目中 我读取了具有不同查询的多个表 并将这些结果集合并到平面文件中 我该如何实现这一目标 我的意思是 JdbcReader 直接采用 1 个选择查询 我如何自定义它 如果 JdbcCursorItemReader 不能满足您的需求
  • 模拟框架对我有什么作用?

    我听说有些我无法交谈的人是 jmock 的忠实粉丝 我已经做了以测试为中心的开发多年 所以我浏览了网站并查看了一些文档 但仍然不知道它有什么好处 我对春天也有同样的问题 如果您已经了解它是什么 他们的文档会很好地解释它 所以我并不认为 jm
  • Android 上的 setTimeOut() 相当于什么?

    我需要等效的代码setTimeOut call function milliseconds 对于安卓 setTimeOut call function milliseconds 您可能想查看定时任务 http developer andro
  • mvn dependency:analyze 结果不正确

    我一直在寻找一种工具 它能够向您显示未使用的依赖项 我很快就偶然发现了 Maven 命令mvn dependency analyze 这样做的问题是 它经常检测到 未使用的 依赖项 如果缺失 这些依赖项就会导致构建失败 这是优化项目的示例
  • 在 Jenkins 内运行构建时,我收到“java/lang/OutOfMemoryError”

    2020 02 25 10 11 24 986 0000 id 79 信息hudson model AsyncPeriodicWork lambda doRun 0 开始maven repo cleanup 2020 02 25 10 11
  • Java 创建 Thread 实例时会发生什么

    我有一个关于 Java 线程和操作系统线程的问题 我读了Java 线程与 Pthreads https stackoverflow com questions 5269535 java threads vs pthreads and Jav
  • Java HttpURLConnection:内容长度计算

    我目前正在为 bitbucket issues RESTful API 开发一个库 我取得了很大的进步 现在我要解决这个部分更新问题 http confluence atlassian com display BBDEV Issues Is
  • Spring Batch:比较数据库之间的数据

    我有两个数据库 Oracle 和 MySQL 目标是将Oracle表中的值保存到MySQL中 要求 MySQL表中不存在数据 但我在理解 Spring Batch 时遇到了困难 步骤中 它包含itemReader itemProcessor
  • 在 Android 中使用 lambdaj

    有人尝试过在android开发中使用lambdaj库吗 当我创建一个简单的小型java应用程序时 它对我来说工作得很好 但我无法在android应用程序中使用它 UPDATE 我正在添加 lambdaj lambdaj 2 3 2 with
  • 用java解密AES加密文件

    我有一个使用 AES 使用 java 应用程序加密的文件 我还有一个加密的密钥文件 但我不明白如何使用密钥来解密文件 大多数教程和示例都会在一个地方创建临时随机密钥 加密文件和解密 所以 问题是如何指定解密时必须使用的密钥 EDIT 我发现
  • 使用 javax.mail 和 CentOS 的邮件服务器

    我有一个 Java 程序 安装在一台旧的 Ubuntu 机器上 并使用 javax mail 发送邮件 然而 那台机器宕机了 我现在在新的 CentOS 机器上运行相同的 Java 应用程序 但是 当我尝试使用 mail smtp host
  • 如何对JConsole的密码文件的密码进行加密

    我正在使用 JConsole 访问我的应用程序 MBean 并使用 password properties 文件 但根据 Sun 的规范 该文件仅包含明文格式的密码 com sun management jmxremote password
  • ObservableList 不更新 ArrayList

    对于学校作业 我们正在使用 JavaFX 中的 ObservableList 对象 对吗 我已经为此工作了一天多了 但无法弄清楚 老师只告诉我们 谷歌一下 所以这也没有帮助 基本上 我们正在开发一个基本的管理应用程序来跟踪人们及其家人 人们
  • 使用 Java 进行 AES 加密并使用 Javascript 进行解密

    我正在制作一个需要基于 Java 的 AES 加密和基于 JavaScript 的解密的应用程序 我使用以下代码作为基本形式进行加密 public class AESencrp private static final String ALG
  • Android:如何以编程方式仅圆化位图的顶角?

    我目前正在使用这段代码 Override public Bitmap transform Bitmap source Bitmap result Bitmap createBitmap source getWidth source getH
  • 在调试模式下,哪些代码更改会自动反映在 Eclipse 中?

    我使用 eclipse 用于编写 调试 作为 IDE 在调试模式下 当我进行一些更改 例如初始化局部变量 时 它们会自动反映 但其他更改例如更改静态变量的值 有时我会收到一条消息 说我需要重新启动虚拟机 有时则不需要 现在的问题是哪些类型的
  • 仅在java中使用数组计算50的阶乘

    我是java的初学者 我有一个作业要编写一个完整的程序 使用数组计算 50 的阶乘 我无法使用像 biginteger 这样的任何方法 我只能使用数组 因为我的教授希望我们理解背后的逻辑 我猜 然而 他并没有真正教我们数组的细节 所以我在这
  • 当我必须在 Netty4 编码器中调用 ByteBuf.retain() 时?

    我正在编写一个以 NUL 终止 JSON 消息的编码器 以便在消息碎片的情况下可以对其进行解码 我找到了这个样本 gt click https github com netty netty blob master codec src mai
  • PSQLException:错误:关系“TABLE_NAME”不存在

    我正在尝试在 PostgreSQL 8 4 2 DB 上运行休眠 每当我尝试运行简单的java代码时 例如 List

随机推荐

  • 使用Python批量修改文件名

    使用os rename fold newfilename 对文件重命名 coding utf 8 import os filename list os listdir for filename in filename list str re
  • 防火墙简介

    1 什么是防火墙 防火墙也被称为防护墙 它是一种位于内部网络与外部网络之间的网络安全系统 通常 防火墙可以保护内部 私有局域网免受外部攻击 并防止重要数据泄露 它实际上是一种隔离技术 在没有防火墙的情况下 路由器会在内部网络和外部网络之间盲
  • Free MyBatis plugin插件搜不到

    Free MyBatis plugin IntelliJ IDEs Plugin Marketplacehttps plugins jetbrains com plugin 8321 free mybatis plugin versions
  • AXIS2+Myeclipse 开发 Webservices

    一 准备工作 1 安装JDK 我使用的是版本是JDK1 6 下载地址 http java sun com javase downloads index jsp 下载那个rpm的bin包 即jdk 6u1 linux i586 rpm bin
  • 域名与服务器如何绑定?

    新手如何快速搭建自己的云服务器 来源 https www cnblogs com yspace p 10050452 html 相信很多小白对于服务器这个概念可能理解得很模糊 其实服务器说白了就是一台供你远端使用且可以一直开机的电脑而已 说
  • es设置数据备份--新建仓库

    前言 设置es备份首先要新建仓库 然后在kibana中配置 备份策略 多长时间备份一次等 存储库的安装 创建存储库 必须先注册快照存储库 才能执行快照和还原的操作 如果多个集群同时注册同一个快照存储库 只有一个可以有写权限 其余集群设置为r
  • centos6.5 MySQL安全模式修改Root 密码

    错误情况描述 mysql u root p ERROR 1045 28000 Access denied for user root localhost using password YES 解决办法 第一步 关闭MySQL服务 servi
  • 使用Python对Excel文件进行处理的小技巧

    Excel文件是一个常用的电子表格文件格式 它可以包含大量的数据和公式 Python有很多库可以用来处理Excel文件 下面介绍其中一些常用的库和技巧 目录 1 使用pandas库读取Excel文件 2 使用openpyxl库进行Excel
  • 内存管理分配,连续分配、分页存储、分段存储、段页式

    目录 1 连续分配管理 1 1 固定分区分配 1 2 动态分区分配 2 非连续分配方式 2 1 基本分页式内存分配管理 2 1 1 基本分页式内存思想与方法 2 1 2 进程逻辑地址与内存物理地址如何转换 2 1 3 页面在内存中的起始地址
  • typescript对与axios的封装

    import Modal message from antd import axios AxiosError AxiosRequestConfig AxiosResponse from axios import AdminConfig fr
  • 一篇搞懂java、javac版本不匹配发生的原因

    问题描述 当我们使用IDE或cmd进行java编译时 有时会发生这样的错误 Error A JNI error has occurred please check your installation and try again 异常部分描述
  • 前端面试的性能优化部分(6)每天10个小知识点

    目录 系列文章目录 前端面试的性能优化部分 1 每天10个小知识点 前端面试的性能优化部分 2 每天10个小知识点 前端面试的性能优化部分 3 每天10个小知识点 前端面试的性能优化部分 4 每天10个小知识点 前端面试的性能优化部分 5
  • sql-libs——less5(盲注)

    首先打开页面 输入 id 1 发现没有任何数据爆出这时把ID换成一个不存在数据 1试一下 发现连 you are in 都没有了 这就是典型的盲注 正确时显示you are in 不正确时什么也不显示 http 192 168 0 5 90
  • Wolfram Mathematica 动手实践

    特点 Mathematica 的介绍 目标是提供介绍 Mathematica 广度的实践经验 重点是易用性 内容 完整概述 基础知识 Mathematica 中的示例项目 输入和输出 文字处理和排版 幻灯片演示 Wolfram 语言基础 使
  • QT信号槽失效的原因

    转载自 https blog csdn net luolaihua2018 article details 110388411 信号槽失效的原因 用Qt进行信号与信号槽连接后 会出现信号槽不响应信号的情况 原因可能是以下的情况 1 类没有声
  • 【MATLAB第12期】基于LSTM长短期记忆网络的多输入多输出回归预测模型思路框架,含滑动窗口, 预测未来,单步预测与多步预测对比,多步预测步数对预测结果影响分析

    MATLAB第12期 基于LSTM RNN作为对比 长短期记忆网络的多输入多输出回归预测模型思路框架 含滑动窗口 预测未来 单步预测与多步预测对比 多步预测步数对预测结果影响分析 更新 2022 11 5更新RNN模型 预测结果附后 一 数
  • 初学(7)——Hadoop错误:can‘t create 事务 lock on /var/lib/rpm/.rpm.lock (权限不够)

    执行删除操作时出现错误 权限不够 1 使用sudo命令 2 如果出现上述情况 切换至root用户 将要执行该操作的用户添加到sudoers su vim etc sudoers xxx 要添加的用户 ALL ALL ALL 命令成功执行
  • Mac用iTerm2连接到Linux上,不能输入中文

    服务器是ubuntu 用Mac的iterm2 ssh连上去 终端显示中文乱码 也不能输入中文 然而本地终端可以显示和输入 解决方法 这种情况一般是终端和服务器的字符集不匹配 MacOSX下默认的是utf8字符集 输入locale可以查看字符
  • 步进电机实验

    通过 ULN2003 驱动模块控制 28BYJ48 步进电机运行方向和速度 按下 KEY1 键调节电机旋转方向 按下 KEY2 键 电机加速 当按下 KEY3 键 电机减速 实现对步进电机运动的简单控制 步进电机简介 步进电机是将电脉冲信号
  • java中io各种流的关闭顺序

    还是先看API void close Closes this stream and releases any system resources associated with it close void close throws IOExc