在我的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();
}
答案 0 :(得分:2)
你在做什么
Properties properties = new Properties();
然后
properties.setProperty(ntry.getKey(),entry.getValue());
我要走出困境并假设'attributeMap2'只包含更新的属性。所以基本上你最终只会保存在attributeMap2地图中的那些。
如果您希望仅捕获已更改的属性并仍想更新文件,请首先读取现有属性文件(在执行setProperty调用之前),然后设置更改的值并存储属性。