java中读取properties的工具类

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;

@SuppressWarnings("unchecked")
public class GlobalConfig {
	public static final String SYSTEM_PROPERTIES = "/system.properties";
	private static Map propertieMap = new HashMap();

	private static Map propertieFileMap = new HashMap();

	static {
		Properties properties = init("/system.properties");
		/**
		 * properties文件的内容如下:在maven管理中放在了src/main/resources/local目录下面
		 * 这样可以把所有的properties文件全部加载到内存中,且加载一次 
		 * 
		 * system.properties的内容如下:
		 * sys.core=systemCore.properties 
		 * y_system=y_system.properties
		 * sys.boss=bossInterface.properties 
		 * 
		 *     bossInterface.properties 的内容如下:
		 *     sBookSelfInfoUrl=http://10.204.*.*:51*** /esbWS/services/sBookSelfInfo
         *     sBookTermInfoUrl=http://10.204.*.*:51*** /esbWS/services/sBookTermInfo
		 */
		Iterator it = properties.keySet().iterator();
		/**
		 * it 中保存的相当于sys.core和y_system和sys.boss
		 */

		while (it.hasNext()) {
			//name的值依次是sys.core和y_system和sys.boss
			String name = (String) it.next();
			//file的值依次是systemCore.properties,y_system.properties,bossInterface.properties
			String file = properties.getProperty(name); 

			file = file.trim();

			propertieFileMap.put(name, file);
			Properties p = init("/" + file);
			//把内存中的    properties文件保存到map中
			propertieMap.put(name, p);
		}
	}

	/**
	 * 根据传过来的properties文件的路径,把该文件  加载到内存中
	 * @param propertyFile
	 * @return
	 */
	private static Properties init(String propertyFile) {
		Properties p = new Properties();
		try {
			p.load(GlobalConfig.class.getResourceAsStream(propertyFile));
		} catch (Exception e) {
			e.printStackTrace();
		}

		return p;
	}

	/**
	 * 
	 * @param cls  根据该参数值找到保存到map中的properties文件
	 * @param name 根据该参数name在找到的properties文件中读取 相应的值
	 * @return
	 * 
	 * 
	 * java代码使用的例子  String url = GlobalConfig.getProperty("sys.boss", "s1166Query");
	 */
	public static String getProperty(String cls, String name) {
		Properties p = (Properties) propertieMap.get(cls);
		if (p != null) {
			return p.getProperty(name);
		}

		return null;
	}

	public static boolean getBooleanProperty(String cls, String name) {
		String p = getProperty(cls, name);
		return "true".equals(p);
	}

	public static Integer getIntegerProperty(String cls, String name) {
		String p = getProperty(cls, name);
		if (p == null) {
			return null;
		}
		return Integer.valueOf(p);
	}

	public static Long getLongProperty(String cls, String name) {
		String p = getProperty(cls, name);
		if (p == null) {
			return null;
		}
		return Long.valueOf(p);
	}

	public static Double getDoubleProperty(String cls, String name) {
		String p = getProperty(cls, name);
		if (p == null) {
			return null;
		}
		return Double.valueOf(p);
	}

	public static void store() {
	}

	public static void store(String cls) {
		Properties p = (Properties) propertieMap.get(cls);
		try {
			FileOutputStream fi = new FileOutputStream(new File(
					(String) propertieFileMap.get(cls)));
			p.store(fi, "Modified time: " + Calendar.getInstance().getTime());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

posted @ 2013-05-28 16:39  wanggd_blog  阅读(345)  评论(0编辑  收藏  举报