zoukankan      html  css  js  c++  java
  • Properties文件载入工具类

    public class PropertiesLoader {

    private static Logger logger = LoggerFactory.getLogger(PropertiesLoader.class);

    private static ResourceLoader resourceLoader = new DefaultResourceLoader();

    private final Properties properties;

    public PropertiesLoader(String... resourcesPaths) {
    properties = loadProperties(resourcesPaths);
    }

    public Properties getProperties() {
    return properties;
    }

    /**
    * 取出Property,但以SystemProperty优先,取不到返回空字符串.
    */
    private String getValue(String key) {
    String systemProperty = System.getProperty(key);
    if (systemProperty != null) {
    return systemProperty;
    }
    if (properties.containsKey(key)) {
    return properties.getProperty(key);
    }
    return "";
    }

    /**
    * 取出String类型的Property,但以SystemProperty优先,如果都为Null则抛出异常.
    */
    public String getProperty(String key) {
    String value = getValue(key);
    if (value == null) {
    throw new NoSuchElementException();
    }
    return value;
    }

    /**
    * 取出String类型的Property,但以SystemProperty优先.如果都为Null则返回Default.
    */
    public String getProperty(String key, String defaultValue) {
    String value = getValue(key);
    return value != null ? value : defaultValue;
    }

    /**
    * 取出Integer类型的Property,但以SystemProperty优先.如果都为Null或内容错误则抛出异常.
    */
    public Integer getInteger(String key) {
    String value = getValue(key);
    if (value == null) {
    throw new NoSuchElementException();
    }
    return Integer.valueOf(value);
    }

    /**
    * 取出Integer类型的Property,但以SystemProperty优先.如果都为Null则返回Default值,如果内容错误则抛出异常
    */
    public Integer getInteger(String key, Integer defaultValue) {
    String value = getValue(key);
    return value != null ? Integer.valueOf(value) : defaultValue;
    }

    /**
    * 取出Double类型的Property,但以SystemProperty优先.如果都为Null或内容错误则抛出异常.
    */
    public Double getDouble(String key) {
    String value = getValue(key);
    if (value == null) {
    throw new NoSuchElementException();
    }
    return Double.valueOf(value);
    }

    /**
    * 取出Double类型的Property,但以SystemProperty优先.如果都为Null则返回Default值,如果内容错误则抛出异常
    */
    public Double getDouble(String key, Integer defaultValue) {
    String value = getValue(key);
    return value != null ? Double.valueOf(value) : defaultValue;
    }

    /**
    * 取出Boolean类型的Property,但以SystemProperty优先.如果都为Null抛出异常,如果内容不是true/false则返回false.
    */
    public Boolean getBoolean(String key) {
    String value = getValue(key);
    if (value == null) {
    throw new NoSuchElementException();
    }
    return Boolean.valueOf(value);
    }

    /**
    * 取出Boolean类型的Property,但以SystemProperty优先.如果都为Null则返回Default,如果内容不为true/false则返回false.
    */
    public Boolean getBoolean(String key, boolean defaultValue) {
    String value = getValue(key);
    return value != null ? Boolean.valueOf(value) : defaultValue;
    }

    /**
    * 载入多个文件, 文件路径使用Spring Resource格式.
    */
    private Properties loadProperties(String... resourcesPaths) {
    Properties props = new Properties();

    for (String location : resourcesPaths) {

    // logger.debug("Loading properties file from:" + location);

    InputStream is = null;
    try {
    Resource resource = resourceLoader.getResource(location);
    is = resource.getInputStream();
    props.load(is);
    } catch (IOException ex) {
    logger.info("Could not load properties from path:" + location + ", " + ex.getMessage());
    } finally {
    IOUtils.closeQuietly(is);
    }
    }
    return props;
    }
    }
  • 相关阅读:
    tinyxml优化之一
    vs下C++内存泄露检测
    Cocos2d-x项目移植到WP8系列之九:使用自定义shader
    [leetcode 双周赛 11] 1228 等差数列中缺失的数字
    [leetcode 周赛 158] 1224 最大相等频率
    [leetcode 周赛 158] 1223 掷骰子模拟
    [leetcode 周赛 158] 1222 可以攻击国王的皇后
    [leetcode 周赛 158] 1221 分割平衡字符串
    [leetcode 周赛 157] 1220 统计元音字母序列的数目
    [leetcode 周赛 157] 1219 黄金矿工
  • 原文地址:https://www.cnblogs.com/luyuefei/p/13386600.html
Copyright © 2011-2022 走看看