Java如何使用首选项API存储程序配置?
java.util.prefs软件包中提供的PreferencesAPI可用于存储和检索应用程序配置。主要的阶级是Preferences阶级。使用此类,您可以管理首选项数据,例如存储,检索,删除和清除首选项数据。
首选项是数据的键值对。你可以存储在string,int,boolean和其他基本数据类型。您可以使用该get()方法从首选项节点中检索与键关联的值,并可以使用该方法在首选项节点put()中存储与键关联的值。要从首选项节点中删除与键关联的值,可以使用remove()方法。如果要清除首选项节点中的键,则可以使用该clear()方法。
这些首选项数据的实际存储取决于平台。例如,在Windows操作系统中,它存储在Windows注册表中。您必须知道,该PreferencesAPI并非旨在用于存储应用程序数据,您仅将其用于存储应用程序的配置。
让我们看一个使用PreferencesAPI的例子。
package org.nhooo.example.util;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
public class PreferencesExample {
public static void main(String[] args) {
PreferencesExample demo = new PreferencesExample();
demo.setPreferences();
}
private void setPreferences() {
//定义一个节点来存储首选项数据。
Preferences pref = Preferences.userRoot().node(getClass().getName());
String key1 = "KEY1";
String key2 = "KEY2";
String key3 = "KEY3";
//读取KEY1的值,如果该值返回一个空字符串
//以前没有设置过。
String key1Value = pref.get(key1, "");
System.out.println("KEY1: " + key1Value);
//读取KEY2的值,如果它不是一个整数
//先前设置为返回-1。
int key2Value = pref.getInt(key2, -1);
System.out.println("KEY2: " + key2Value);
//读取KEY3的值,如果未设置任何值,则返回true
//先前。
boolean key3Value = pref.getBoolean(key3, true);
System.out.println("KEY3: " + key3Value);
//设置上面所有首选项键的值。
if (key1Value.equals("")) {
pref.put(key1, "January");
}
if (key2Value == -1) {
pref.putInt(key2, 1000);
}
if (key3Value) {
pref.putBoolean(key3, false);
}
printKeys(pref);
//从首选项数据中删除KEY1。
pref.remove(key1);
printKeys(pref);
try {
//删除该节点的所有首选项数据。
pref.clear();
} catch (BackingStoreException e) {
e.printStackTrace();
}
printKeys(pref);
}
/**
* Print Keys in the preferences node.
* @param pref Preference node.
*/
private void printKeys(Preferences pref) {
System.out.println("PreferencesExample.printKeys");
try {
String[] keys = pref.keys();
for (String key : keys) {
System.out.println("Key = " + key);
}
} catch (BackingStoreException e) {
e.printStackTrace();
}
System.out.println("============================");
}
}这是运行上面的示例时将获得的输出:
KEY1: KEY2: -1 KEY3: true PreferencesExample.printKeys Key = KEY1 Key = KEY2 Key = KEY3 ============================ PreferencesExample.printKeys Key = KEY2 Key = KEY3 ============================ PreferencesExample.printKeys ============================