SpringBoot项目打成jar包后法无法读取资源文件

1. 前言

  • 当我们在写SpringBoot项目且需要用到resources下的资源文件时,很可能会出现一种情况
    • 在编码阶段运行时,文件可以读取到,并且可以实现需要用到该文件的功能。但是当它打成jar包后运行时,会出现java.io.FileNotFoundException异常

2. 分析

原代码:

String str=this.getClass().getClassLoader().getResource("printpass.xlsx").getPath();
File file = new File(str);
XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(file));
  • 会出现异常,是因为类似上述代码这么写,是通过找到文件的路径,再通过路径去读取文件的。而当你打成jar包后,是不存在路径的,它自然无法找到文件,就会抛出异常。

3. 解决方法

  • 既然打成jar包后无法通过路径访问文件,我们可以通过I/O流来获取文件,再对文件进行操作。

改后代码:

InputStream inputStream=this.getClass().getClassLoader().getResourceAsStream("printpass.xlsx");
XSSFWorkbook wb = new XSSFWorkbook(inputStream);

这样就可以啦!!!

你可能感兴趣的:(JavaEE)