java.io.IOException: UT010029: Stream is closed异常

这篇具有很好参考价值的文章主要介绍了java.io.IOException: UT010029: Stream is closed异常。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、场景

后端提供一个excel文件模板下载接口

二、异常信息

java.io.IOException: UT010029: Stream is closed
	at io.undertow.servlet.spec.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:139) ~[undertow-servlet-2.2.19.Final.jar:2.2.19.Final]
	at org.springframework.session.web.http.OnCommittedResponseWrapper$SaveContextServletOutputStream.write(OnCommittedResponseWrapper.java:624) ~[spring-session-core-2.7.0.jar:2.7.0]
	at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:167) ~[na:1.8.0_341]

三、异常分析

我们使用了ServletOutputStream来向客户端发送响应。在finally块中不需要关闭输出流,因为Servlet容器会在请求处理完成后自动关闭输出流。如果在finally块中尝试关闭已关闭的输出流,就会抛出java.io.IOException: Stream is closed异常。因此,我们可以安全地省略关闭输出流的代码。文章来源地址https://www.toymoban.com/news/detail-628205.html

四、demo

    @Operation(summary = "下载模版")
    @GetMapping("download")
    public Result<String> download(HttpServletResponse response) {
        String fileName = "demo模版.xlsx";
        ServletOutputStream outputStream = response.getOutputStream()
        try {
            // 清空下载文件的空白行(空白行是因为有的前端代码编译后产生的)
            response.reset();
            response.setCharacterEncoding("utf-8");
            // 解决中文文件名乱码问题
            String encodedFileName = URLEncoder.encode(fileName, "UTF-8");
            response.setHeader("Content-Disposition", "attachment;filename=\"" + encodedFileName + "\";filename*=utf-8''" + encodedFileName);
            // 设置文件类型
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
            // 读取文件并输出到浏览器
            File file = FileUtil.file("templates/demo_templates.xlsx");
            outputStream.write(FileUtils.readFileToByteArray(file));
            outputStream.flush();
        } catch (IOException e) {
            log.error("下载文件失败,{}", fileName, e);
        } finally {
            // 不要在此处关闭输出流
            // outputStream.close();
        }
        return Result.success("下载成功");
    }

到了这里,关于java.io.IOException: UT010029: Stream is closed异常的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java.io.IOException: unexpected end of stream on Connection

    目录 Java.io.IOException: Unexpected End of Stream on Connection 引言 错误原因 解决方法 结论 在基于Java网络编程的开发中,我们有时可能会遇到​ ​java.io.IOException: Unexpected end of stream on connection​ ​的错误。这个错误提示意味着在与远程服务器建立连接时,发生了无法预料的连接断开的

    2024年02月04日
    浏览(59)
  • java.io.IOException: Your InputStream was neither an OLE2 stream, nor an OOXML stream

    流读取文件时可能报以下错误: 此错误一般是文件上传时,用Workbook工厂或者实体类直接创建new HSSFWorkbook/XSSFWorkbook时出现。 解决方法很简单有两种: 1、在项目的pom.xml文件内新增或补足以下代码块 2、用更简单的cn.hutool.poi.excel.ExcelReader类,样例如下:

    2024年04月13日
    浏览(38)
  • java.io.IOException: unexpected end of stream on 以及java.io.EOFException: \n not found: limit=0

    java.io.IOException: unexpected end of stream on java.io.OKHttp Caused by: java.io.EOFException: n not found: limit=0 content=… 在一次使用OkHttp对接两个第三方接口的时候遇到了这个报错,情景是这样的,先请求第一个接口得到一个结果,再把第一个结果作为参数传到第二个接口,但是第二个接口一直

    2024年02月12日
    浏览(52)
  • Android 创建文件时出现 java.io.IOException: Operation not permitted异常

    一、android 6.0         6.0之前是不需要动态申请权限的,直接在 manifest.xml 中申请即可以正常使用。 二、安卓10,SDK=29         安卓10开始,安卓继续加强了限制,如果需要读写SD卡,还需要额外的进行申请requestLegacyExternalStorage申明。 三、安卓11,SDK=30         安卓

    2024年02月02日
    浏览(42)
  • Redis exception; nested exception is io.lettuce.core.RedisException java.io.IOException 远程主机

    个人解决方法: 编辑/etc/ssh/sshd_config,添加配置项: 配置完后保存,重启服务: 以下是整个经过: 本地开发是发现隔一段时间没请求redis就会报错: 网上看了很多解决办法,都是timeout和tcp-keepalive的配置,多次试验后都无效,最奇怪的是putty链接服务器也是过一会就断开了,

    2024年02月12日
    浏览(35)
  • 史上最简单RabbitMQ中IO流异常的解决 org.springframework.amqp.AmqpIOException: java.io.IOException 超级简单

    org.springframework.amqp.AmqpTimeoutException: java.util.concurrent.TimeoutException     at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:73) ~[spring-rabbit-2.4.8.jar:2.4.8]     at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(Ab

    2024年02月06日
    浏览(47)
  • 关于Caused by: java.io.IOException: DerInputStream.getLength(): lengthTag=111, too big异常解决方法

    目录 前言:遇到这种问题,从字面意思来讲是因为文件太大,超过了文件的预留长度 一、再现场景: 二、排除错误: 三、解决办法:         1、第一种:修改yml文件中的证书密码:         2、第二种:在依赖中加入maven-resources-plugin组件依赖 将http请求转变为https请求,再

    2024年02月11日
    浏览(42)
  • 已解决java.lang.RuntimeException: java.io.IOException: invalid constant type: 18异常的正确解决方法,亲测有效!!!

    已解决java.lang.RuntimeException: java.io.IOException: invalid constant type: 18异常的正确解决方法,亲测有效!!! java.lang.RuntimeException: java.io.IOException: invalid constant type: 18 ## 思路 这个错误通常出现在Java代码中使用了无效的常量类型。这可能是由于以下原因导致的: 版本不匹配:您正在

    2024年02月05日
    浏览(44)
  • SpringBoot整合Redis:java.io.IOException: 远程主机强迫关闭了一个现有的连接。或者控制台报连接超时异常

    场景: 项目启动过后 Redis 连接过一会就会断开,报如下问题: 问题1: 问题2: 问题3: 一、解决 1、设置连接空闲超过 N(秒或毫秒)后关闭,0为禁用:redis.timeout: 60s(这里设置和tcp-keepalive的值一致) 2、设置 redis 服务端的配置文件 redis.conf 中 tcp-keepalive 的时间为60(单位秒

    2024年02月13日
    浏览(38)
  • 【IO流】IOException IO流异常

    异常 概括 IOException(Input/Output Exception,输入/输出异常) 是 Java 编程中常见的异常类型之一。它是 java.io 包中定义的一个异常类,通常用于处理输入/输出操作时可能发生的异常情况。 IOException 表示在进行输入和输出操作时发生了异常,例如文件读写时遇到问题、网络通信中

    2024年02月19日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包