添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在程序执行过程中,如果我们遇见了以下异常:java.io.IOException: Stream closed.

即stream已经被关闭,我们分析一下就很容易知道原因了,即stream已经被关闭。那么最有可能的情况就是你多次关闭了Stream。

try {
InputStream is = new xxx();
// other codes
is.close(); //第一次关闭inputStream
} catch(IOException e) {
} finally
is.close(); //再一次关闭inputStream,这样会引起 Stream closed 异常

解决方法:将多余的close语句去掉。

同理,在jsp中,或servlet中也一样,多次关闭out,也会抛出此异常,解决方法与此相同!

注:finally{}内的内容一定会执行!!!
---------------------
作者:superfatsheep
来源:CSDN
原文:https://blog.csdn.net/pianistOfSoftware/article/details/51899343
版权声明:本文为博主原创文章,转载请附上博文链接!

Java文件流“java.io.IOException: Stream closed异常解决 初学者在Javaio流操作中往往最容易忘记的就是处理完之后流的关闭,但是好不容易记起来了,却又出现java.io.IOException: Stream closed异常,现在以记事本案例来演示此问题。 java.io.IOException: Stream closed 是一个常见的 Java 异常,通常发生在尝试对一个已经关闭的输入/输出流(如 InputStream, OutputStream, Reader, Writer 等)执行读写操作时。这个异常Java I/O 框架的一部分,用于指示在 I/O 操作期间发生了某种错误。 FileInputStream inputStream = null; try { inputStream = new FileInputStream("tst.txt"); } catch (FileNotFoundException e) { e.printStackTrace(); BufferedInputStream bufferedInp... `java.io.IOException: Stream closed` 异常通常发生在尝试对已关闭的输入/输出流(如 `InputStream`、`OutputStream`、`Reader`、`Writer` 等)执行操作时。一旦流被关闭,任何试图读取或写入该流的操作都会抛出这个异常。 ### 报错原因 1. **流被错误地关闭了**:在代码中可能不小心提前关闭了流,或者在多线程环境中另一个线程关闭了流。 2. **资源管理的错误**:使用 `try-with-resources` 语句时,流会在 SpirngBoot拦截器(Interceptor)和过滤器(Filter)的操作的如下图所示。OOP编程的思路是封装、继承和多态,而AOP编程的思路是不改变原有接口和功能的基础上提供功能扩展。SpringBoot拦截器和过滤器是Spring Boot的一种机制,用于对请求和响应进行操作的拦截,是AOP编程的一种体现。一般来说,AOP编程的实现思路是提供代理,把一些常用功能如权限检查、日志、事务等,从每个业务方法中剥离出来,而提供代理统一实现。该问题的解决思路是:提供一个复制流,让操作基于复制流。 某位刚来不久的实习生,在写一个File文件转Base64编码的项目过程中,需要关闭IO流,看他代码实在太长,就给了工具类,这篇幅里有讲,详见链接:https://blog.csdn.net/weixin_39309402/article/details/101447275 结果他执行代码的时候,发现文件内容为Null,就问我为什么?我先把代码贴上: public class Base64ToS... 文件下载接口不能有返回值。。。。。。。。。。因为接口被调用后`response`会自动关闭`ServletOutputStream`,而return时会再次自动关闭`OutputStream`,就会导致Stream is closed //创建outputStream response.setContentType("APPLICATION/OCTET-STREAM"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(zipName.concat(".zip"), "UTF-8")); import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpRequest; import org.springframework.http.client.Clie...