zoukankan      html  css  js  c++  java
  • Java 程序 关于Properties 类使用Store方法时不能会覆盖以前Properties 文件的内容

    F:\Demo.properties 文件内容:

    #u65B0u589Eu4FE1u606F
    #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"); 代码位置

  • 相关阅读:
    装饰器实例
    生成器、迭代器脚本实例
    魔法方法和属性
    随机生成验证码
    认证客户端的链接合法性
    将socket通信实现多进程
    线程锁模拟抢票系统
    ntp时间服务器
    蛇形串---------
    两年内计划
  • 原文地址:https://www.cnblogs.com/heganlin/p/5871321.html
Copyright © 2011-2022 走看看