前面小括号中出现问题,文件流会自动关闭
摘自网友回复:
在stackoverflow偶尔看到的一个关于try()...catch()的用法,通常我们使用try...catch()捕获异常的,如果遇到类似IO流的处理,要在finally部分关闭IO流,当然这个是JDK1.7之前的写法了;在JDK7优化后的try-with-resource语句,该语句确保了每个资源,在语句结束时关闭。所谓的资源是指在程序完成后,必须关闭的流对象。写在()里面的流对象对应的类都实现了自动关闭接口AutoCloseable;
/**
* response文件输出流
* @param response
* @param path
*/
private void setResponseOutputStream(HttpServletResponse response, String path) {
response.reset();
response.setContentType("application/pdf");
File file = new File(path);
try (FileInputStream fileInputStream = new FileInputStream(file);
OutputStream outputStream = response.getOutputStream()) {
IOUtils.write(IOUtils.toByteArray(fileInputStream), outputStream);
response.setHeader("Content-Disposition", "inline; filename= file");
outputStream.flush();
} catch (FileNotFoundException e) {
log.error("responseFileStream error:FileNotFoundException" + e.toString());
} catch (IOException e) {
log.error("responseFileStream error:" + e.toString());
}
}