学无止境,气有浩然!
新开通公众号,欢迎大家关注,后续会持续分享技术和相关资料
前言
最近项目需要下载一个模板文件用来修改上传,模板文件放在Spring Boot
项目中resources
文件夹下。功能就是获取这个文件然后下载。解决的主要问题就是因为打出来是一个jar
包,运行的时候就是相当于从jar
包里面的目录获取这个文件。
方案
其实总共有三种方式。
1.getResourceAsStream
这个是Class
对象的方法,利用类加载器查找。
InputStream input = getClass().getResourceAsStream("/template/template.xlsx");
2.ResourceLoader
这是Spring Boot
提供的解析类,通过解析获取org.springframework.core.io.Resource
对象,可以通过添加classpath:
拿到resources
具体文件。
@Autowired
private ResourceLoader resourceLoader;
public void test() {
Resource resource = resourceLoader.getResource("classpath:/template/template.xlsx");
Files.readAllBytes(Paths.get(resource.getURI())
//...
}
3.@Value配合Resource
这个是目前使用的方式,其实跟第2种差不多,就是拿到Resource
解析
@Value("classpath:/template/template.xlsx")
private Resource template;
public void test() {
Files.readAllBytes(Paths.get(template.getURI())
//...
}