java.io.FileNotFoundException

错误信息:

java.io.FileNotFoundException: class path resource [static/templet/importTerminal.xlsx] cannot be resolved to URL because it does not exist

解决方法

InputStream stream =etClass().getClassLoader().getResourceAsStream("static/templet/temp.xlsx");

File targetFile = new File("name.xlsx");

FileUtils.copyInputStreamToFile(stream, targetFile);


问题描述:代码在WINDOWS环境下正常,但部到LINUX下就会出现此问题,获取不到文件,并且解析出的路径名称后跟着一个!号


修改前

@RequestMapping(value = "/outputTemplet/export", produces = { "application/vnd.ms-excel;charset=UTF-8" })
@ResponseBody
public void outputTemplet(HttpServletResponse response, HttpServletRequest request) {

//获取响应输出流,并将Excel文件写入响应输出流中
try {
OutputStream out = response.getOutputStream(); // 获取响应输出流
//读取模板
Resource resource = resourceService.loadResource("classpath:static/templet/importTerminal.xlsx");
Workbook wb = new XSSFWorkbook(new FileInputStream(resource.getFile()));// 得到服务器上excel表格对象

supplementary(wb,request);//填充数据


response.reset(); // 重置请求响应
// 设置文件名
String fileNameString = "导入导出模板.xlsx";
String fileName = new String(fileNameString.getBytes("GBK"), "iso-8859-1");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName); // 设置请求响应头
response.setContentType("application/msexcel; charset=UTF-8"); // 设置内容类型及编码格式

wb.write(out); // 将文件写入输出流
out.flush(); // 执行清空缓存区
response.flushBuffer();// 执行清空缓存区
} catch (Exception e) {
e.printStackTrace();
}

}



修改后

@RequestMapping(value = "/outputTemplet/export", produces = { "application/vnd.ms-excel;charset=UTF-8" })
@ResponseBody
public void outputTemplet(HttpServletResponse response, HttpServletRequest request) {

//获取响应输出流,并将Excel文件写入响应输出流中
try {
OutputStream out = response.getOutputStream(); // 获取响应输出流
//读取模板
// Resource resource = resourceService.loadResource("classpath:static/templet/importTerminal.xlsx");
// Workbook wb = new XSSFWorkbook(new FileInputStream(resource.getFile()));// 得到服务器上excel表格对象

InputStream stream = getClass().getClassLoader().getResourceAsStream("static/templet/importTerminal.xlsx");
File targetFile = new File("导入导出模板.xlsx");
FileUtils.copyInputStreamToFile(stream, targetFile);

Workbook wb = new XSSFWorkbook(new FileInputStream(targetFile));// 得到服务器上excel表格对象

supplementary(wb,request);//填充辖区名称


response.reset(); // 重置请求响应
// 设置文件名
String fileNameString = "导入导出模板.xlsx";
String fileName = new String(fileNameString.getBytes("GBK"), "iso-8859-1");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName); // 设置请求响应头
response.setContentType("application/msexcel; charset=UTF-8"); // 设置内容类型及编码格式

wb.write(out); // 将文件写入输出流
out.flush(); // 执行清空缓存区
response.flushBuffer();// 执行清空缓存区
} catch (Exception e) {
e.printStackTrace();
}

}

你可能感兴趣的:(JAVA)