在项目中放了一个基础配置json文件,需要读出其中的内容,来进行操作
目录结构:/resource/profile/xxx.json
最开始是想到使用ResouceUtils.getFile()来直接读取json文件中的内容
File file = ResourceUtils.getFile("classpath:profile/preset-preparation-work.json");
本地测试ok,但是发布到环境后,报错了,因为是打包成jar部署的,ResourceUtils.getFile获取不了jar包中的内容
java.io.FileNotFoundException: class path resource [profile/preset-preparation-work.json] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/app.jar!/BOOT-INF/classes!/profile/preset-preparation-work.json
然后又使用ResourceLoader.getResoure,还是一样不行
ResourceLoader resourceLoader = new DefaultResourceLoader();
Resource resource = resourceLoader.getResource("classpath:profile/preset-preparation-work.json");
File file = resource.getFile();
最后想到流,然后就这样解决了。
String content = null;
try {
Resource resource = new ClassPathResource("profile/preset-preparation-work.json");
BufferedReader br = new BufferedReader(new InputStreamReader(resource.getInputStream()));
StringBuilder sb = new StringBuilder();
String temp;
while ((temp = br.readLine()) != null) {
sb.append(temp);
}
br.close();
content = sb.toString();
} catch (IOException e) {
e.printStackTrace();
}
调试这个地方部署了几次,浪费了很多时间!!!
参考资料
RYAN0UP 2018-07-27 10:21
其实可以将lib依赖,resources,jar分开打包的,读取文件方便很多。
Flicker博主 2018-08-01 9:52
好办法!!!多写指教