web项目中从不同的路径读取文件

时间:2023-02-14 07:28:14

项目中的配置文件可以放在classpath下,webapp下获取其他任何一个指定的绝对地址,读取这些文件就从这三个地方去找。主要代码如下:

  private List<String> getPathList(String filePaht){
List<String> list = new ArrayList<String>();
String realPaht = "";
//获取classpath路径
realPaht = UserPrivServiceImpl.class.getResource("/").getPath()+ filePaht;
list.add(realPaht);
//获取webapp路径
realPaht = servletContext.getRealPath("/") + filePaht;
list.add(realPaht);
//获取绝对路径
list.add(filePaht);
return list;
} private void initPolicy(){
List<String> policyPaht = getPathList(policyFile);
if(policyPaht != null && policyPaht.size() > 0 ){
for(String path : policyPaht){
try{
initPolicy(path);
logger.info("从路径:["+path+"]找到文件policy.yml,加载成功。");
break;
}catch (FileNotFoundException e) {
logger.info("从路径:["+path+"]中没找到文件policy.yml,尝试从其他加载方式。");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
}

参数中的filePath是在配置文件中配置的policy.yml文件路径。

servletContext是在spring环境中自动注入的
@Autowired
private ServletContext servletContext;