SystemConfig实现之从properties文件读取数据

根据从网上找的资料,使用properties类实现了读取配置文件信息。

import java.io.File;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
*/
public class SystemConfig {

private SystemConfig(){

}

//获取环境变量init.conf.env
private static final String ENV=System.getProperty(“init.conf.env”);
//构建配置文件名
private static final String MQ_ARTICLE_PROPERTY_FILE = “mq-article-“+ENV+”.properties”;

private static Properties props = null;

/**
* 初始化ResourceBundle对象
* @throws IOException
*/
private static void init() throws IOException{
if( null == props){
props = new Properties();
loadFile();
}
}

/**
* 加载指定名称的properties文件,约定路径为/conf/
* @param propName
* @throws IOException
*/
private static void loadFile() throws IOException{
//获取配置文件列表/conf/*.properties
File dir = new File(SystemConfig.class.getResource(“/”).getPath()+”conf/”);
String[] fileNames = dir.list();

//过滤出符合当前环境的文件
//List<String> fileList = null;
if (fileNames != null && fileNames.length > 0) {
//fileList = Lists.newArrayList();
// 包括文件,文件夹的判断
for (String fName : fileNames) {
if (fName.indexOf(ENV) != -1) {
//fileList.add(fName);
//load进props
InputStream in = SystemConfig.class.getResourceAsStream(“/conf/” + fName);
props.load(in);
}
}
}
}

/**
* 获取系统配置
* @param key
* @param defaultValue
* @return
*/
public static String getProperties(String key,String defaultValue){
try {
init();
} catch (IOException e) {
props = null;
}
if(null == props)
return defaultValue;
return props.getProperty(key) == null ? defaultValue : props.getProperty(key);
}

}

除了使用properties类的方法外,Java还提供了resourcebundle的方式实现这一功能。

但是resourcebundle的命名规则有约束,主要为了实现国际化。这里还是先不用这个了。知道能实现即可。