import java.util.*;
import java.io.*;
public final class ConfigurationFile{
private ConfigurationFile(){}
/*读取解析配置文件
*param:fileName:配置文件名
*/
protected static Properties getProperties(String fileName){
Properties props = new Properties();
try{
FileInputStream fis = new FileInputStream(fileName);
props.load(fis);
//System.out.println(props.size());
}catch(Exception e){
e.printStackTrace();
}
//props.propertyNames()将配置文件的key封装在一个Enumeration对象中
Enumeration et = props.propertyNames();
//依次解析每一个key对应的value
while(et.hasMoreElements()){
String ekey = (String)et.nextElement();
String evalue = props.getProperty(ekey);
//如果value中包含${,则将${}中的变量替换成变量对应的值
if(evalue.indexOf("${") != -1){
Iterator it = props.keySet().iterator();
while(it.hasNext()){
String k = (String)it.next();
String v = props.getProperty(k);
evalue = evalue.replaceAll("[$]//{"+k+"//}",v);
}
}
props.put(ekey,evalue);
}
return props;
}
//-------测试打印------
public static void main(String[] args){
Properties prop = getProperties("mytest.properties");
//System.out.println(prop.getProperty("name"));
Iterator it = prop.keySet().iterator();
while(it.hasNext()){
String k = (String)it.next();
String v = prop.getProperty(k);
System.out.println(k + ":" + v);
}
}
}