java properties文件 变量_Java中获取包含变量的配置文件config.properties内容

packagecom.tz.util;importjava.io.IOException;importjava.io.InputStream;importjava.util.Calendar;importjava.util.Map;importjava.util.Properties;importjava.util.regex.Matcher;importjava.util.regex.Pattern;/***

*@authortianzhen

**/

public enumPropertiesUtil {

ROOT_PATH("root_path"),

USERS_PATH("users_path"),

PICTURES_PATH("pictures_path"),

FILES_PATH("files_path"),

LOGS_PATH("logs_path");privateString title;private staticProperties props;privatePropertiesUtil(String title){this.title =title;

}private static final String PROPERTIES = "config.properties";private static final Pattern PATTERN = Pattern.compile("\\$\\{([^\\}]+)\\}");static{try{

props= newProperties();

InputStream ins= PropertiesUtil.class.getClassLoader().getResourceAsStream(PROPERTIES);

props.load(ins);

ins.close();

}catch(IOException e) {

e.printStackTrace();

}

}privateString getTitle() {returntitle;

}public static String getTranslate(PropertiesUtil prop, Mapparams){

String path=get(prop);if(path==null||path.equals("")){return "";

}if(params!=null && !params.keySet().isEmpty()){//需要替换的字段均放入map中,包括需要替换的日期

for(String key : params.keySet()){

path= path.replace("{"+key+"}", params.get(key));

}

}//如不指定日期,则替换为当前日期

Calendar cal =Calendar.getInstance();

path= path.replace("{year}", cal.get(Calendar.YEAR)+"")

.replace("{month}", cal.get(Calendar.MONTH)+1>9?cal.get(Calendar.MONTH)+1+"":"0"+(cal.get(Calendar.MONTH)+1))

.replace("{date}", cal.get(Calendar.DATE)>9?cal.get(Calendar.DATE)+"":"0"+cal.get(Calendar.DATE));returnpath;

}public staticString get(PropertiesUtil prop){

String value=props.getProperty(prop.getTitle());return value==null?null:loop(value);

}

@SuppressWarnings("static-access")private staticString loop(String key){//定义matcher匹配其中的路径变量

Matcher matcher =PATTERN.matcher(key);

StringBuffer buffer= newStringBuffer();boolean flag = false;while(matcher.find()) {

String matcherKey= matcher.group(1);//依次替换匹配到的路径变量

String matchervalue =props.getProperty(matcherKey);if (matchervalue != null) {

matcher.appendReplacement(buffer, matcher.quoteReplacement(matchervalue));//quoteReplacement方法对字符串中特殊字符进行转化

flag = true;

}

}

matcher.appendTail(buffer);//flag为false时说明已经匹配不到路径变量,则不需要再递归查找

return flag?loop(buffer.toString()):key;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值