张晨的个人博客

java使用Properties读取/加载.ini文件

张晨的个人博客2014-06-13Java技术 2566 0A+A-

把需要配置的default.ini文件放在项目src下

 

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

/**
 * 配置信息处理组件-系统静态配置信息处理组件
 */
public class StaticProperties {

//配置信息
private static Properties prop = new Properties();
//锁标记,用于管理调取、清空刷新时的线程同步问题
private static String syncStr = ""+StaticProperties.class;

//初始化
static {
	init();
}

/**
 * 初始化配置信息
 * 默认读取项目源代码路径下/default.ini配置文件
 * 如需挂载其他配置文件,需要在此配置文件内,
 * 将文件路径编写进Properties.includeFilePath参数,以分号分隔
 */
private static void init(){
	synchronized(syncStr){
	loadPatch("/default.ini");
	String includeFilePath = getProperty("Properties.includeFilePath");
	if(includeFilePath!=null){
		for(String patch:includeFilePath.split(";")){
			loadPatch(patch);
		}
	}
	}
}

/**
 * 将给定路径的配置文件信息,加载进配置参数中
 * @param patch
 */
private static void loadPatch(String patch){
	InputStream is = null;
	try {
		is = StaticProperties.class.getResourceAsStream(patch);
		if(is!=null){
			prop.load(is);
		}
		System.out.println("PropertiesHelper.loadPatch["+patch+"]");
	}catch(Exception e){
		e.printStackTrace();
	}finally{
		if(is!=null){
			try {
				is.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}

/**
 * 按照给定的key获取配置参数
 * @param key
 * @return
 */
public static String getProperty(String key){
	synchronized(syncStr){
		return prop.getProperty(key);
	}
}

/**
 * 获取配置参数
 * 备注:获取到的配置参数更改无效
 * @return
 */
public static Properties getAllProperty(){
	synchronized(syncStr){
		return (Properties)prop.clone();
	}
}

/**
 * 刷新配置参数
 * 同步最新配置文件到配置参数中
 */
public static void flush(){
	synchronized(syncStr){
		prop.clear();
		init();
	}
}


public static void main(String[] args) {
/*
default.ini 内容为:
Properties.includeFilePath=/app_config/dataSource.ini;/app_config/ip.ini; 
ip.ini 内容为:
sendInsBranchID=1000000000
*/
System.out.println(StaticProperties.getProperty("sendInsBranchID"));

//控制台输出结果为1000000000

}

}



文章关键词
Properties
.ini文件
发表评论