2014-01-24 106 views
3

我有一個應用程序實現了一個JTree並使用默認的java屬性文件填充樹;節點是鍵,值是節點的內容。該應用程序被設計爲動態的,因此JButton和JTextField被實現爲獲取新值並將值存儲在屬性文件中的存在鍵中。Java屬性文件追加新值

因此,例如我有下面如在sample.properties默認值文件

節點=貓,狗行,小鼠

和使用的JTextField和JButton的I輸入「兔子」追加到節點,看起來像:

節點=貓,狗,鼠,兔

我實現的JTextField和JButton,並讓他們工作,但我似乎無法找到追加的好方法屬性文件中現有鍵的新值。

回答

3

只是FileWriter

FileWriter fileWritter = new FileWriter("example.properties", true); 
BufferedWriter bufferWritter = new BufferedWriter(fileWritter); 
bufferWritter.append("PROPERTES_YOUR_KEY=PROPERTES_YOUR_VALUE"); 
bufferWritter.close(); 

更新

屬性API不支持,我不知道爲什麼你需要這個功能。
您可以嘗試如下:

example.properties

PROPERTIES_KEY_3=PROPERTIES_VALUE_3 
PROPERTIES_KEY_2=PROPERTIES_VALUE_2 
PROPERTIES_KEY_1=PROPERTIES_VALUE_1 

計劃

Properties pop = new Properties(); 
pop.load(new FileInputStream("example.properties")); 
pop.put("PROPERTIES_KEY_3", "OVERWRITE_VALUE"); 
FileOutputStream output = new FileOutputStream("example.properties"); 
pop.store(output, "This is overwrite file"); 

輸出

PROPERTIES_KEY_3=OVERWRITE_VALUE 
PROPERTIES_KEY_2=PROPERTIES_VALUE_2 
PROPERTIES_KEY_1=PROPERTIES_VALUE_1 
+0

我只是嘗試這樣做,它似乎並沒有附加到現有的鍵值對。我想要的是將新值附加到現有的key = value對,所以如果我想在現有的「key = value1」中使用「value2」,它會追加到現有的鍵上,使其看起來像「key = value1,value2」 – thestiggg

+0

@ user3201025檢查更新信息 – CycDemo

+0

嘿謝謝,這解決了我的問題,起初BufferedWritter只是繼續附加整個屬性文件本身,但與FileOutputStream它重寫它是我所需要的 – thestiggg

1

我想看看Apache Commons Configuration。 它有非常具體的例子,可以做你正在問的東西。

嘗試:

import org.apache.commons.configuration.PropertiesConfiguration; 

PropertiesConfiguration config = new PropertiesConfiguration(
    "config.properties"); 

config.setProperty("my.property", somevalue); 

config.save(); 
+0

它似乎與Java屬性相似,除了它實際上迎合了一個關鍵中的多個值,但我認爲改變一切以適應這一點並不會在時間上受益 – thestiggg