java 读取配置文件 与更新

笔记

public class Config {
    
     private static Properties props = new Properties();
     static File configFile = null;
        static {
            InputStreamReader reader = null;
            try {
                File dir = new File(System.getProperty("user.dir"));
                configFile = new File(dir, "config.properties.dev");
                if (!configFile.exists()) {
//                    String path = Thread.currentThread().getClass().getClassLoader().getResource("config.properties").getPath();
//                    configFile = new File(path);
                    configFile = new File(dir, "config.properties");
                }
                reader = new InputStreamReader(new FileInputStream(configFile), "UTF-8");
                props.load(reader);
            } catch (FileNotFoundException e) {
            } catch (Exception e) {
            } finally {
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (IOException e) {
                    }
                }
            }
        }
        
        public static String getDsl(){
            System.out.println("dsl" + props.getProperty("dsl"));
            return props.getProperty("dsl");
        }
        
        public static String getDate(){
            System.out.println("date" + props.getProperty("date"));
            return props.getProperty("date");
        }
        
        public static void updateProperties(String keyname,String keyvalue) {   
            try {   
                props.load(new FileInputStream(configFile));   
                // 调用 Hashtable 的方法 put,使用 getProperty 方法提供并行性。   
                // 强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。   
                props.setProperty(keyname, keyvalue);   
                OutputStream fos = new FileOutputStream(configFile);              
                // 以适合使用 load 方法加载到 Properties 表中的格式,   
                // 将此 Properties 表中的属性列表(键和元素对)写入输出流   
                props.store(fos, "Update '" + keyname + "' value");   
            } catch (IOException e) {   
                System.err.println("属性文件更新错误");   
            }   
        }   
     
}

 

 

posted @ 2017-08-07 14:26  丨Mars  阅读(558)  评论(0编辑  收藏  举报