代码库-读取属性文件中的值
要求:实现读取属性文件 config.properties 中属性功能,提供参数key, 得到对应的值。
测试代码:
public static void main(String[] args) { System.out.println(PropertiesUtil.getStringByKey("user")); }
实现代码:
1 import java.io.File; 2 import java.io.FileInputStream; 3 import java.util.HashMap; 4 import java.util.Map; 5 import java.util.Properties; 6 7 /** 8 * 单例模式 9 */ 10 final class ResourceLoader { 11 12 private static ResourceLoader loader = new ResourceLoader(); 13 private static Map<String, Properties> loaderMap = new HashMap<>(); 14 15 private ResourceLoader() { 16 } 17 18 static ResourceLoader getInstance() { 19 return loader; 20 } 21 22 Properties getPropFromProperties(String fileName) throws Exception { 23 24 Properties prop = loaderMap.get(fileName); 25 if (prop != null) { 26 return prop; 27 } 28 prop = new Properties(); 29 30 /* 31 当程序启动时,如果添加了系统变量 configurePath 的配置,那么就会在这个路径下寻找属性文件, 32 否则就会在当前的classpath 路径下寻找属性文件 33 */ 34 String configPath = System.getProperty("configurePath"); 35 36 if (configPath == null) { 37 prop.load(this.getClass().getClassLoader().getResourceAsStream(fileName)); 38 } else { 39 String filePath = configPath + File.separator + fileName; 40 prop.load(new FileInputStream(new File(filePath))); 41 } 42 43 loaderMap.put(fileName, prop); 44 return prop; 45 } 46 47 }
import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; /** * 读取properties文件 */ public class PropertiesUtil { private static ResourceLoader loader = ResourceLoader.getInstance(); private static ConcurrentMap<String, String> configMap = new ConcurrentHashMap<String, String>(); private static final String DEFAULT_CONFIG_FILE = "config.properties"; /** * 从属性文件propName 中读取属性key */ public static String getStringByKey(String key, String propName) { Properties prop; try { prop = loader.getPropFromProperties(propName); } catch (Exception e) { throw new RuntimeException("属性文件加载失败", e); } key = key.trim(); if (!configMap.containsKey(key)) { if (prop.getProperty(key) != null) { configMap.put(key, prop.getProperty(key)); } } return configMap.get(key); } /** * 从默认属性文件 中读取属性key */ public static String getStringByKey(String key) { return getStringByKey(key, DEFAULT_CONFIG_FILE); } /** * 从属性文件propName 中读取所有属性 */ public static Properties getProperties() { try { return loader.getPropFromProperties(DEFAULT_CONFIG_FILE); } catch (Exception e) { return null; } } }
原创文章,欢迎转载,转载请注明出处!
把每一件简单的事情做好,就是不简单;把每一件平凡的事情做好,就是不平凡!相信自己,创造奇迹~~