Properties属性文件载入、读取工具类

来源:互联网 发布:淘宝商品编辑软件 编辑:程序博客网 时间:2024/05/22 08:11
<span style="font-size:14px;">/******************************************************************************* * Copyright (c) 2005, 2014 springside.github.io * * Licensed under the Apache License, Version 2.0 (the "License"); *******************************************************************************/package org.springside.modules.utils;import java.io.IOException;import java.io.InputStream;import java.util.NoSuchElementException;import java.util.Properties;import org.apache.commons.io.IOUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.core.io.DefaultResourceLoader;import org.springframework.core.io.Resource;import org.springframework.core.io.ResourceLoader;/** * Properties文件载入工具类. 可载入多个properties文件, 相同的属性在最后载入的文件中的值将会覆盖之前的值,但以System的Property优先. *  * @author calvin */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。    */   private String getValue(String key) {      String systemProperty = System.getProperty(key);      if (systemProperty != null) {         return systemProperty;      }      return properties.getProperty(key);   }   /**    * 取出String类型的Property,如果都為Null则抛出异常.    */   public String getProperty(String key) {      String value = getValue(key);      if (value == null) {         throw new NoSuchElementException();      }      return value;   }   /**    * 取出String类型的Property.如果都為Null則返回Default值.    */   public String getProperty(String key, String defaultValue) {      String value = getValue(key);      return value != null ? value : defaultValue;   }   /**    * 取出Integer类型的Property.如果都為Null或内容错误则抛出异常.    */   public Integer getInteger(String key) {      String value = getValue(key);      if (value == null) {         throw new NoSuchElementException();      }      return Integer.valueOf(value);   }   /**    * 取出Integer类型的Property.如果都為Null則返回Default值,如果内容错误则抛出异常    */   public Integer getInteger(String key, Integer defaultValue) {      String value = getValue(key);      return value != null ? Integer.valueOf(value) : defaultValue;   }   /**    * 取出Double类型的Property.如果都為Null或内容错误则抛出异常.    */   public Double getDouble(String key) {      String value = getValue(key);      if (value == null) {         throw new NoSuchElementException();      }      return Double.valueOf(value);   }   /**    * 取出Double类型的Property.如果都為Null則返回Default值,如果内容错误则抛出异常    */   public Double getDouble(String key, Integer defaultValue) {      String value = getValue(key);      return value != null ? Double.valueOf(value) : defaultValue;   }   /**    * 取出Boolean类型的Property.如果都為Null抛出异常,如果内容不是true/false则返回false.    */   public Boolean getBoolean(String key) {      String value = getValue(key);      if (value == null) {         throw new NoSuchElementException();      }      return Boolean.valueOf(value);   }   /**    * 取出Boolean类型的Propert.如果都為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 path:{}", 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;   }}</span>


0 0
原创粉丝点击