spring boot 打包读取 jar 中的资源 文件
有些情况,我们需要读取一些资源文件,如支付证书, 少量的话,可以放在 resources 目录下,但是一般的文件流方式是读取不到的(FileInputStream, 它需要获取系统的文件的绝对路径)
解决方案
@RestController
public class ResourceController {
@Value("classpath:test.txt")
private Resource resource;
/**
* 这种打包之后是读取不到的!!
* @return
* @throws Exception
*/
@GetMapping("/load/r1")
public String loadResource() throws Exception {
File file = ResourceUtils.getFile("classpath:test.txt");
String s = FileUtil.readString(file, "UTF-8");
return s;
}
/**
* 这种是可以的!!
* @return
* @throws Exception
*/
@GetMapping("/load/r2")
public String loadResource2() throws Exception {
ClassPathResource classPathResource = new ClassPathResource("test.txt");
String s = IoUtil.read(classPathResource.getInputStream(), "UTF-8");
return s;
}
/**
* 这种也是可以的!!
* @return
* @throws Exception
*/
@GetMapping("/load/r3")
public String loadResource3() throws Exception {
String s = IoUtil.read(resource.getInputStream(), "UTF-8");
return s;
}
}