spring boot 读取resources下文件 和 打成jar 读取jar包中配置文件
程序员文章站
2022-05-04 19:54:36
...
问题:
由于使用spring boot + maven 管理项目,所以会把项目打成jar包来进行运行。在不打成jar的情况下,正常情况一般都是读取绝对路径来进行获取配置文件路径。
String url = SensitiveWordInit.class.getResource("/").getFile();
File file = ResourceUtils.getFile("classpath:key.txt");
以上两种方法来获取。但是当项目打包成jar 包时,通过路径获取会出现file:/D:/xxx/xxx.jar!/BOOT-INF/classes!/xx.xx 的错误。
解决办法:
当项目打成jar包时,还需要读取配置文件。需要通过流的形式来进行读取。方法如下
private Set<String> readWordFile() throws Exception{
Set<String> set = null;
// File file = ResourceUtils.getFile("classpath:key.txt");
// System.out.println(file.toString());
// String url = SensitiveWordInit.class.getResource("/").getFile();
// System.out.println("readSensitiveWordFile" + url);
// File file = new File(url+"key.txt"); //读取文件
InputStream inputStream = SensitiveWordInit.class.getResourceAsStream("/key.txt");
InputStreamReader read = new InputStreamReader(inputStream,ENCODING);
try {
set = new HashSet<>();
BufferedReader bufferedReader = new BufferedReader(read);
String txt ;
while((txt = bufferedReader.readLine()) != null){ //读取文件,将文件内容放入到set中
set.add(txt);
}
} catch (Exception e) {
throw e;
}finally{
read.close(); //关闭文件流
}
return set;
}
通过
InputStream inputStream = SensitiveWordInit.class.getResourceAsStream("/key.txt");
来获取classpath 下的key.txt 来进行读取。这样就避免了路径的错误问题。
以上就是读取jar包中的配置文件问题解决办法。
上一篇: 安卓欢迎界面实现,定时跳转页面
下一篇: 添加公众号信息并显示到界面中