项目场景:
提示:读取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);
被注释的代码之前是放开的,注释时候不在报错。