java讀取配置檔案封裝類,支援同時讀取多個檔案
阿新 • • 發佈:2019-02-14
在springmvc中 通常需要用java程式碼讀取resource資原始檔中的properties配置檔案,我的辦法將支援同時讀取多個檔案.
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class PropertyUtil { private static final Logger logger = LoggerFactory.getLogger(PropertyUtil.class); private static Properties props; private static Properties redisProps; private static Properties commonProps; private static String name; synchronized static private void loadProps(String fileName){ logger.info("開始載入properties檔案內容......."); logger.info(fileName); props = new Properties(); InputStream in = null; try { //第一種,通過類載入器進行獲取properties檔案流 in = PropertyUtil.class.getClassLoader().getResourceAsStream(fileName); //第二種,通過類進行獲取properties檔案流 //in = PropertyUtil.class.getResourceAsStream("/jdbc.properties"); props.load(in); } catch (FileNotFoundException e) { logger.error(fileName+"檔案未找到"); } catch (IOException e) { logger.error("出現IOException"); } finally { try { if(null != in) { in.close(); } } catch (IOException e) { logger.error("jdbc.properties檔案流關閉出現異常"); } } logger.info("載入properties檔案內容完成..........."); logger.info("properties檔案內容:" + props); } public static String getProperty(String fileName,String key){ if(null == props) { loadProps(fileName); } return props.getProperty(key); } public static String getProperty(String fileName,String key, String defaultValue) { if(null == props) { loadProps(fileName); } return props.getProperty(key, defaultValue); } public static Properties getAll(String fileName){ logger.info("檔名:"+fileName); logger.info("props:"+props); if(null == props){ loadProps(fileName); }else{ if(!props.propertyNames().equals(fileName)){ //這一步是為了判斷再次讀取的時候是否是相同檔案 loadProps(fileName); } } return props; } }