java-修改配置文件中参数值的疑问

fgod 发布于 2016/10/12 17:26
阅读 237
收藏 0
/**? 每次执行了配置值的替换,页面也都能读取到最新的值,但是我进入文件查看却没有更新,
然后我停掉服务去文件路径下看配置文件也没有改变配置的值,
关键重新启动后,再次读取配置文件的值竟然是上次更新过后的值
然后继续做更新,依然能拿到最新的值?? 但是为什么我在windows资源里面查看文件内容,却一直没改动*/ 

public class ConfigUpdateUtils {
    public static void main(String[] args) {
//      String fileName = "log4j.properties";
        String fileName = "config/config.properties";
        updateOrAddProperties(fileName,"aaB","mm2");
    }
    /**
     * 传递键值对,更新properties文件
     * @param fileName
     * 文件名(放在resource源包目录下),需要后缀
     */
    public static void updateOrAddProperties(String fileName,String key,String value) {
        String filePath = ConfigUpdateUtils.class.getClassLoader().getResource(fileName).getFile();
        Properties props = new Properties();
        BufferedWriter bw = null;
        try {
            filePath = URLDecoder.decode(filePath, "utf-8");
            InputStream in =new BufferedInputStream(new FileInputStream(filePath));
            props.load(in);
            //System.out.println(props);
            props.setProperty(key,value);
            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath)));
            props.store(bw, "updateOrAdd");
            bw.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}




加载中
0
f
fgod
(⊙o⊙)… 大家请忽略!!
0
风雨中的灰灰
风雨中的灰灰
你的代码一点问题没有,只是你修改的是  .../classes/config/config.properties  并不是src/config/config.properties
0
阿信sxq
阿信sxq
String path = ConfigFile.class.getProtectionDomain().getCodeSource()
       .getLocation().getPath();
path = URLDecoder.decode(path, Charset.defaultCharset().name());
String filePath = new File(path).getParent() + File.separator + filename;
OutputStream output = new FileOutputStream(filePath);



返回顶部
顶部