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"); 代碼位置
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章