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 getPropertys(String propertiesClassPath) { Map map = new ConcurrentHashMap(); 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 getPropertysByFile(String propertiesFilePath) { Map map = new ConcurrentHashMap(); Properties properties = getPropertiesByFile(propertiesFilePath); if (properties == null) { return map; } for (String name : properties.stringPropertyNames()) { map.put(name, properties.getProperty(name)); } return map; } }