Java 程序 关于Properties 类使用Store方法时不能会覆盖以前Properties 文件的内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 程序 关于Properties 类使用Store方法时不能会覆盖以前Properties 文件的内容相关的知识,希望对你有一定的参考价值。

F:\\Demo.properties 文件内容:

#\u65B0\u589E\u4FE1\u606F
#Wed Sep 14 11:16:24 CST 2016
province=广东
tt=近蛋
city=佛山市

java代码:

        public static void test() throws IOException {
        FileWriter writer = new FileWriter("F:\\Demo.properties");
        FileReader reader = new FileReader("F:\\Demo.properties");
        Properties p = new Properties();
        p.load(reader);

        System.out.println(p);

        p.setProperty("dd", "中建普联");
        p.setProperty("cc", "狗娃");
        p.setProperty("bb", "狗剩");
        p.setProperty("aa", "铁蛋");

        p.store(writer, "新增信息");

        System.out.println(p);

        reader.close();
        writer.close();    
    }  

 控制台输出

{}
{dd=中建普联, aa=铁蛋, bb=狗剩, cc=狗娃}

 

出现的问题:

一,读取的内容为空,

二,没有覆盖以前Properties 文件的内容

 

原因是:
FileWriter writer = new FileWriter("F:\\Demo.properties");
FileWriter 打开文件的方式默认是覆盖,就是一旦执行了上面这句,那么原有文件中的内容被清空
所以你在还没有p.load(in);加载Properties的时候就把文件清空了

修改后如下 :

 

public static void test() throws IOException {
        
        FileReader reader = new FileReader("F:\\Demo.properties");
        Properties p = new Properties();
        p.load(reader);

        System.out.println(p);

        p.setProperty("dd", "中建普联");
        p.setProperty("cc", "狗娃");
        p.setProperty("bb", "狗剩");
        p.setProperty("aa", "铁蛋");

        FileWriter writer = new FileWriter("F:\\Demo.properties");
        p.store(writer, "新增信息");
        
        System.out.println(p);

        reader.close();
        writer.close();    
    }

 

 控制台输出:

{province=广东, tt=近蛋, city=佛山市}
{dd=中建普联, province=广东, tt=近蛋, aa=铁蛋, bb=狗剩, city=佛山市, cc=狗娃}

 

 

问题解决:

是因为FileWriter 打开文件的方式默认是覆盖,

就是一旦执行了上面这句,那么原有文件中的内容被清空
所以你在还没有p.load(in);加载Properties的时候就把文件清空了

所以 一定要注意打开 FileWriter 的时机,来把握  FileWriter writer = new FileWriter("F:\\Demo.properties"); 代码位置

以上是关于Java 程序 关于Properties 类使用Store方法时不能会覆盖以前Properties 文件的内容的主要内容,如果未能解决你的问题,请参考以下文章

关于JAVA 中的Configuration类

新手关于log4j.properties的问题,望各位大大相助.

Java关于Properties用法的总结

Java关于Properties用法——替换配置文件中的参数

java 中properties 类读取k-v配置文件

关于java中String类!!!!