Spring Boot读取和写入json文件
1.静态文件存在于文件系统中(有具体的路径)
SpringBoot的配置文件一般写在application.yml中,如何自定义将一些额外的属性用json存储起来,以方便读取和修改呢?主要使用两个类库,Fastjson和Common-io。
1 | //读取配置文件 |
1.java——读取JSON文件
2.使用FileUtils简化你的文件操作
3.读取Json配置文件
4.fastjson的基本使用方法
5.Java IO流学习总结七:Commons IO 2.5-FileUtils
6.FileUtils简化你的文件操作
另一种方法:
使用Runable接口,其实和上面的都是差不多的。
1.SpringBoot JSON文件读取
2.【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)
3.Springboot 读取项目下的Json文件成对象
4.Spring Boot 从Json静态文件中读取数据
2.资源目录下的静态文件(存放于资源resources目录下)
如果静态文件存在于resources目录下,可以通过ClassPathResource加载相应目录下的文件并读取其中的内容。
1 | package com.proheng.gis.ApiUtils; |
注意事项
使用ClassPathResource进行resource文件读取,在开发的时候没有问题,但是打包部署到服务器上之后,就会出现问题了。
1 | cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/cloud/dev/PhEMSJava/PHEMSsimulation.jar!/BOOT-INF/classes!/inp/pipeline.inp |
1 | // 读取文件 |
【解决方法】
将文件读取方式,改为流读取方式
1 | // 读取文件 |
1.SpringBoot打包后无法读取到resource下的资源文件
2.Spring boot 打包jar后无法读取resource下的配置文件 通过文件流的读取方式,代码中将*.conf文件拷贝至jar外的临时文件夹下,然后再读取临时文件夹下的*.conf文件。
3.问题解决:cannot be resolved to absolute file path because it does not reside in the file system: jar 1.使用resource.getInputStream()读取文件内容。2.缓存到临时文件,使用临时文件路径进行读取。
4.SpringBoot项目jar启动异常:java.io.FileNotFoundException: file:/xxx/xxx.jar!/BOOT-INF/classes!/xxx.yml