如何在java中更新属性文件

时间:2015-06-03 13:20:29

标签: java

在我的swing应用程序中,我动态创建组件并单击“保存”按钮将其值存储到属性文件中。

在每个组件的值更改事件中,我获取值并将其放入Map中。单击保存按钮时,我会迭代并将值存储到属性文件中。下次打开窗口时,如果属性文件存在,我会从文件中读取属性,并在渲染时将值设置为每个组件。

再次更新某些值后,单击“保存”按钮将删除以前的值,并且该文件仅包含更改的值。

如何在不丢失先前值的情况下更新属性文件?

以下是我编写属性的代码:

Properties properties = new Properties();
fileOutputStream = new FileOutputStream(propertiesFile);

Iterator itr = attributeMap2.entrySet().iterator();
while (itr.hasNext()) {
    Entry<CategoryAttributeObj, String> entry = (Entry<CategoryAttributeObj, String>)itr.next();
    properties.setProperty(entry.getKey(), entry.getValue());
}

properties.store(fileOutputStream, "storing index values to properties file");
fileOutputStream.close();

以下是我阅读属性的代码:

Properties properties = new Properties();
try {
    fileInputStream = new FileInputStream(propertiesFile);
    properties.load(fileInputStream);
    fileInputStream.close();
}

1 个答案:

答案 0 :(得分:2)

你在做什么

Properties properties = new Properties();

然后

properties.setProperty(ntry.getKey(),entry.getValue());

我要走出困境并假设'attributeMap2'只包含更新的属性。所以基本上你最终只会保存在attributeMap2地图中的那些。

如果您希望仅捕获已更改的属性并仍想更新文件,请首先读取现有属性文件(在执行setProperty调用之前),然后设置更改的值并存储属性。