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