package cn.emay.sdk.util; 
 | 
  
 | 
import java.io.File; 
 | 
import java.io.FileInputStream; 
 | 
import java.io.IOException; 
 | 
import java.io.InputStream; 
 | 
import java.math.BigDecimal; 
 | 
import java.util.Date; 
 | 
import java.util.Map; 
 | 
import java.util.Properties; 
 | 
import java.util.concurrent.ConcurrentHashMap; 
 | 
  
 | 
/** 
 | 
 * 配置文件读取工具 
 | 
 *  
 | 
 * @author 东旭 
 | 
 * 
 | 
 */ 
 | 
public class PropertiesUtil { 
 | 
  
 | 
    /** 
 | 
     * 获取单一参数的值 
 | 
     *  
 | 
     * @param key 
 | 
     * @param propertiesFilePath 
 | 
     * @return 
 | 
     */ 
 | 
    public static String getProperty(String key, String propertiesClassPath) { 
 | 
        Properties properties = getProperties(propertiesClassPath); 
 | 
        if (properties == null) 
 | 
            return null; 
 | 
        return properties.getProperty(key); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取单一参数的数值 
 | 
     *  
 | 
     * @param key 
 | 
     * @param propertiesClassPath 
 | 
     * @param defaultValue 
 | 
     * @return 
 | 
     */ 
 | 
    public static int getIntProperty(String key, String propertiesClassPath, int defaultValue) { 
 | 
        Properties properties = getProperties(propertiesClassPath); 
 | 
        if (properties == null || !properties.containsKey(key)) 
 | 
            return defaultValue; 
 | 
        int value = defaultValue; 
 | 
        try { 
 | 
            value = Integer.valueOf(properties.getProperty(key)); 
 | 
        } catch (Exception e) { 
 | 
        } 
 | 
        return value; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取单一参数的数值 
 | 
     *  
 | 
     * @param key 
 | 
     * @param propertiesClassPath 
 | 
     * @param defaultValue 
 | 
     * @return 
 | 
     */ 
 | 
    public static long getLongProperty(String key, String propertiesClassPath, long defaultValue) { 
 | 
        Properties properties = getProperties(propertiesClassPath); 
 | 
        if (properties == null || !properties.containsKey(key)) 
 | 
            return defaultValue; 
 | 
        long value = defaultValue; 
 | 
        try { 
 | 
            value = Long.valueOf(properties.getProperty(key)); 
 | 
        } catch (Exception e) { 
 | 
        } 
 | 
        return value; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取单一参数的布尔值 
 | 
     *  
 | 
     * @param key 
 | 
     * @param propertiesClassPath 
 | 
     * @param defaultValue 
 | 
     * @return 
 | 
     */ 
 | 
    public static boolean getBooleanProperty(String key, String propertiesClassPath, boolean defaultValue) { 
 | 
        Properties properties = getProperties(propertiesClassPath); 
 | 
        if (properties == null || !properties.containsKey(key)) 
 | 
            return defaultValue; 
 | 
        String valuep = properties.getProperty(key); 
 | 
        if (valuep.equalsIgnoreCase("true") || valuep.equalsIgnoreCase("on") || valuep.equalsIgnoreCase("1")) 
 | 
            return true; 
 | 
        if (valuep.equalsIgnoreCase("false") || valuep.equalsIgnoreCase("off") || valuep.equalsIgnoreCase("0")) 
 | 
            return false; 
 | 
        return defaultValue; 
 | 
    } 
 | 
  
 | 
    public static float getFloatProperty(String key, String propertiesClassPath, float defaultValue) { 
 | 
        Properties properties = getProperties(propertiesClassPath); 
 | 
        if (properties == null || !properties.containsKey(key)) 
 | 
            return defaultValue; 
 | 
        float value = defaultValue; 
 | 
        try { 
 | 
            value = Float.valueOf(properties.getProperty(key)); 
 | 
        } catch (Exception e) { 
 | 
        } 
 | 
        return value; 
 | 
    } 
 | 
  
 | 
    public static Date getDateProperty(String key, String propertiesClassPath, String format, Date defaultValue) { 
 | 
        Properties properties = getProperties(propertiesClassPath); 
 | 
        if (properties == null || !properties.containsKey(key)) 
 | 
            return defaultValue; 
 | 
        Date date = DateUtil.parseDate(properties.getProperty(key), format); 
 | 
        if (date == null) 
 | 
            date = defaultValue; 
 | 
        return date; 
 | 
    } 
 | 
  
 | 
    public static BigDecimal getBigDecimalProperty(String key, String propertiesClassPath, String format, BigDecimal defaultValue) { 
 | 
        Properties properties = getProperties(propertiesClassPath); 
 | 
        if (properties == null || !properties.containsKey(key)) 
 | 
            return defaultValue; 
 | 
        BigDecimal value = defaultValue; 
 | 
        try { 
 | 
            value = new BigDecimal(properties.getProperty(key)); 
 | 
        } catch (Exception e) { 
 | 
        } 
 | 
        return value; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取批量参数的值 
 | 
     *  
 | 
     * @param propertiesFilePath 
 | 
     * @return 
 | 
     */ 
 | 
    public static Map<String, String> getPropertys(String propertiesClassPath) { 
 | 
        Map<String, String> map = new ConcurrentHashMap<String, String>(); 
 | 
        Properties properties = getProperties(propertiesClassPath); 
 | 
        if (properties == null) { 
 | 
            return map; 
 | 
        } 
 | 
        for (String name : properties.stringPropertyNames()) { 
 | 
            map.put(name, properties.getProperty(name)); 
 | 
        } 
 | 
        return map; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取原生的Properties 
 | 
     *  
 | 
     * @Title: getProperties 
 | 
     * @Description: 获取原生的Properties 
 | 
     * @param propertiesFilePath 
 | 
     * @return Properties 
 | 
     */ 
 | 
    public static Properties getProperties(String propertiesClassPath) { 
 | 
        Properties properties = new Properties(); 
 | 
        InputStream in = null; 
 | 
        try { 
 | 
            in = PropertiesUtil.class.getClassLoader().getResourceAsStream(propertiesClassPath); 
 | 
            if(in != null){ 
 | 
                properties.load(in); 
 | 
            } 
 | 
        } catch (IOException e) { 
 | 
            throw new RuntimeException(e); 
 | 
        } finally { 
 | 
            if (in != null) { 
 | 
                try { 
 | 
                    in.close(); 
 | 
                } catch (IOException e) { 
 | 
                    e.printStackTrace(); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return properties; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取原生的Properties 
 | 
     *  
 | 
     * @Title: getProperties 
 | 
     * @Description: 获取原生的Properties 
 | 
     * @param propertiesFilePath 
 | 
     * @return Properties 
 | 
     */ 
 | 
    public static Properties getPropertiesByFile(File file) { 
 | 
        Properties properties = new Properties(); 
 | 
        FileInputStream fis = null; 
 | 
        try { 
 | 
            fis = new FileInputStream(file); 
 | 
            if(fis != null){ 
 | 
                properties.load(fis); 
 | 
            } 
 | 
        } catch (IOException e) { 
 | 
            throw new RuntimeException(e); 
 | 
        } finally { 
 | 
            if (fis != null) { 
 | 
                try { 
 | 
                    fis.close(); 
 | 
                } catch (IOException e) { 
 | 
                    e.printStackTrace(); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return properties; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取原生的Properties 
 | 
     *  
 | 
     * @Title: getProperties 
 | 
     * @Description: 获取原生的Properties 
 | 
     * @param propertiesFilePath 
 | 
     * @return Properties 
 | 
     */ 
 | 
    public static Properties getPropertiesByFile(String propertiesFilePath) { 
 | 
        Properties properties = new Properties(); 
 | 
        FileInputStream fis = null; 
 | 
        try { 
 | 
            File file = new File(propertiesFilePath); 
 | 
            fis = new FileInputStream(file); 
 | 
            if(fis != null){ 
 | 
                properties.load(fis); 
 | 
            } 
 | 
        } catch (IOException e) { 
 | 
            throw new RuntimeException(e); 
 | 
        } finally { 
 | 
            if (fis != null) { 
 | 
                try { 
 | 
                    fis.close(); 
 | 
                } catch (IOException e) { 
 | 
                    e.printStackTrace(); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return properties; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取单一参数的值 
 | 
     *  
 | 
     * @param key 
 | 
     * @param propertiesFilePath 
 | 
     * @return 
 | 
     */ 
 | 
    public static String getPropertyByFile(String key, String propertiesFilePath) { 
 | 
        Properties properties = getPropertiesByFile(propertiesFilePath); 
 | 
        if (properties == null) { 
 | 
            return null; 
 | 
        } 
 | 
        return properties.getProperty(key); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取批量参数的值 
 | 
     *  
 | 
     * @param propertiesFilePath 
 | 
     * @return 
 | 
     */ 
 | 
    public static Map<String, String> getPropertysByFile(String propertiesFilePath) { 
 | 
        Map<String, String> map = new ConcurrentHashMap<String, String>(); 
 | 
        Properties properties = getPropertiesByFile(propertiesFilePath); 
 | 
        if (properties == null) { 
 | 
            return map; 
 | 
        } 
 | 
        for (String name : properties.stringPropertyNames()) { 
 | 
            map.put(name, properties.getProperty(name)); 
 | 
        } 
 | 
        return map; 
 | 
    } 
 | 
  
 | 
} 
 |