java.io.IOException: Attempted read from closed stream.

项目场景:

提示:读取pdf文件到本地:

读取文件流读取失败


问题描述

读取文件流读取失败

 2022-06-08 09:00:52 [http-nio-8000-exec-4] ERROR m.z.e.handler.GlobalExceptionHandler - java.io.IOException: Attempted read from closed stream.
	at org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:176)
	at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:135)
	at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:148)
	at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1127)
	at org.apache.commons.io.IOUtils.copy(IOUtils.java:849)
	at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1104)
	at org.apache.commons.io.IOUtils.copy(IOUtils.java:825)
	at org.apache.commons.io.FileUtils.copyToFile(FileUtils.java:999)
	at org.apache.commons.io.FileUtils.copyInputStreamToFile(FileUtils.java:905)

原因分析:

原因是流只可以被读一次,第一次读完毕就已经被关闭,所以第二次读取的时候就是失败的。


解决方案:

提示:只读取一次数据流

//            String html = EntityUtils.toString(response.getEntity(), "UTF-8");
//            System.out.println(html);
            InputStream content = response.getEntity().getContent();

            File file = new File(FILE_TO);
            FileUtils.copyInputStreamToFile(response.getEntity().getContent(), file);

被注释的代码之前是放开的,注释时候不在报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值