我的springboot项目中的resource静态资源有一个文件novl.txt文件,我在Windows下运行可以对其进行读取并且写入内容,但是当我打成jar之后,在centos服务器中,就无法读取到改文件,只能改为通过用getResourceAsStream的方法拿到输入流,但是这样这能读取,我如何进行写入呢?
打包之后,文件路径就变了
需要读入流,然后把流写入临时文件
// templateFilePath 文件相对路径
public void setTxtResource(String templateFilePath) {
ClassPathResource imgResource = new ClassPathResource(templateFilePath);
try (InputStream inputStream = imgResource.getInputStream()) {
// 正文模板中的图片
File imageFile = File.createTempFile("文件名", ".pdf");// 文件名;文件后缀
FileUtils.copyInputStreamToFile(inputStream, imageFile);
} catch (IOException e) {
log.error("");
e.printStackTrace();
}
}
这个个window和linux是没有关系的;
如果你在window运行的是你的jar包,会出现一样的问题;
所以解决问题的方式最好是将目录配置在配置文件中,或者目录相对jar同级,就是不能再jar里面;
这样读写都读取的统一路径,就不会有问题的,jar相当于是一个压缩文件,你对文件进行读取都是用了jar协议的;
要更改压缩文件里面的某段内容,肯定要么是以jar协议读取全量后重新打包;
并且springboot的jar还是双层jar协议,所以就不要想着更改jar内部的文件内容了;jar外部路径是你唯一的选择;
还有就是可以选择使用数据库、redis、文件系统来存储和读取,这样会增加中间件等东西,看你自己的选择咯;
希望对你有帮助...
不行就写绝对路径把