我正在尝试使用org.osgi.service.prefs.Preferences
. 第一次保存有效,但我在后续运行中所做的更改无法更改文件。查看API和Vogella 文章,我认为我正在采取正确的步骤。当我在调试模式下运行时,在我调用 之后clear()
,我仍然看到相同的子键/值对。此外,在我刷新首选项后,磁盘上的文件不会改变。我必须打电话flush()
才能完成这项工作吗?(我必须刷新到磁盘以更改内存中的某些内容似乎很愚蠢——这无济于事)。
我究竟做错了什么?
这是我保存描述符的代码(请注意,这是从 McCaffer、Lemieux 和 Aniszczyk 的“Eclipse Rich Client Platform”无耻地复制而来,并进行了一些小的修改以更新 Eclipse 3.8.1 的 API):
Preferences preferences = ConfigurationScope.INSTANCE.getNode(Application.PLUGIN_ID);
preferences.put(LAST_USER, connectionDetails.getUserId());
Preferences connections = preferences.node(SAVED);
try {
connections.clear();
//preferences.flush();
} catch (BackingStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
preferences = ConfigurationScope.INSTANCE.getNode(Application.PLUGIN_ID);
connections = preferences.node(SAVED);
for (Iterator<String> it = savedDetails.keySet().iterator(); it.hasNext();) {
String name = it.next();
ConnectionDetails d = (ConnectionDetails) savedDetails.get(name);
Preferences connection = connections.node(name);
connection.put(SERVER, d.getServer());
connection.put(PASSWORD, d.getPassword());
}
try {
preferences.flush();
} catch (BackingStoreException e) {
e.printStackTrace();
}