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;
}
}