を使用していくつかの簡単な設定をロードして保存しようとしていますorg.osgi.service.prefs.Preferences
。最初の保存は機能しましたが、その後の実行で行った変更はファイルの変更に失敗します。APIとVogellaの記事を見ると、私は正しい手順を実行していると思います。デバッグモードで実行すると、を呼び出した後clear()
も、同じ子のキーと値のペアが表示されます。さらに、設定をフラッシュした後、ディスク上のファイルは変更されません。これを機能させるために電話flush()
する必要がありますか?(メモリ内の何かを変更するためにディスクにフラッシュする必要があるのはばかげているようです-そしてそれは役に立ちません)。
私は何が間違っているのですか?
記述子を保存するためのコードは次のとおりです(これは、McCaffer、Lemieux、およびAniszczykによって「EclipseRich 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();
}