Java 属性文件添加新值

3
我有一个应用程序,它实现了一个JTree,并将java属性文件作为默认值填充到树中;节点是键,节点的内容是值。该应用程序被设计为动态的,因此实现了一个JButton和JTextField来接收新值,并将这些值放入属性文件中已存在的键中。
例如,我在sample.properties文件中有以下行作为默认值:
node=cat,dog,mice 使用JTextField和JButton添加输入“rabbit”以追加到节点,如下所示:
node=cat,dog,mice,rabbit
我已经实现了JTextField和JButton并使其工作,但我似乎找不到一个好的方法来将新值附加到属性文件中已存在的键上。
2个回答

3
只需要使用FileWriter
FileWriter fileWritter = new FileWriter("example.properties", true);
BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
bufferWritter.append("PROPERTES_YOUR_KEY=PROPERTES_YOUR_VALUE");
bufferWritter.close();

更新

Properties 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

我刚试了一下,似乎没有将新值附加到现有的键=值对中。我想要的是将新值附加到现有的键=值对中,因此如果我想在现有的“键=值1”中添加“值2”,它将附加到该现有键以看起来像“键=值1,值2”。 - thestiggg
嘿,谢谢,那解决了我的问题。一开始,BufferedWriter只是不断地将整个属性文件附加到自身上,但使用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();

它似乎类似于Java属性,只是它实际上可以处理一个键中的多个值,但我认为为了适应它而改变一切不会在时间上使我受益。 - thestiggg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接