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的時候就把文件清空了