项目场景:
由于项目中需要按照特定模板导出,所以就把模板传到resources下用于导出时使用
问题描述
利用下方代码在本地无问题,打包后由于文件路径问题出现URI is not hierarchical
File rootPath = new File(ResourceUtils.getURL("classpath:").getPath()); //SpringBoot项目获取根目录的方式
File templatePath = new File(rootPath.getAbsolutePath(), "/excel/template.xlsx");
原因分析:
提示:这里填写问题的分析:打包后导致的文件路径问题
解决方案:
改为使用流获取文件再转为文件解决了问题(使用后最好关闭流)
ClassPathResource resource = new ClassPathResource("/excel/template.xlsx");
inputStream = resource.getInputStream();
File templatePath = File.createTempFile("temp", ".xlsx");
// 使用 Apache Commons IO 库将输入流复制到临时文件
FileUtils.copyInputStreamToFile(inputStream, templatePath);