springboot项目jar包部署后读取resources下模版文件的坑
1、错误写法:IDEA运行项目调试情况下读取文件正常,打成jar包部署后无法读取到文件
String dataPath = this.getClass().getResource("/").getPath() + "/resources/js-folder/admin/data.js";
BufferedReader br = new BufferedReader(new FileReader(dataPath));
String indexPath = this.getClass().getResource("/").getPath() + "/templates/admin/indexData.html";
BufferedReader brIndex = new BufferedReader(new FileReader(indexPath));
2、正确写法:
InputStream stream = this.getClass().getClassLoader().getResourceAsStream("resources/js-folder/admin/data.js")
BufferedReader br = new BufferedReader(stream);
InputStream streamIndex = this.getClass().getClassLoader().getResourceAsStream("templates/admin/indexData.html")
BufferedReader brIndex = new BufferedReader(streamIndex);
3、目录结构
Resource下的文件是存在于jar这个文件里面,在磁盘上是没有真实路径存在的,它其实是位于jar内部的一个路径。所以通过ResourceUtils.getFile或者this.getClass().getResource("")方法都无法正确获取文件。