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;
    }
    }
  • 相关阅读:
    Android-Drawable
    DOM4J与JDOM解析xml文档
    SAX解析xml文档
    java中的xml简介与DOM解析xml
    二进制I/O
    java中的集合框架
    文本I/O
    Java中基本数据的包装类
    Sting 字符串类
    抽象类和接口
  • 原文地址:https://www.cnblogs.com/luyuefei/p/13386600.html
Copyright © 2011-2022 走看看