目录

读取项目资源遇到的坑

在项目中放了一个基础配置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();
        }

调试这个地方部署了几次,浪费了很多时间!!!

参考资料