JDK 1.4 引入 java.util.prefs.Preferences,提供跨平台的使用者偏好設定儲存。在 Windows 上,它自動映射到登錄檔,無需 JNI 或原生程式碼即可讀寫登錄檔鍵值。
import java.io.*;
import java.util.prefs.*;
public class PrefsDemo {
public static void main(String[] args) {
String[] keys = {"sunway", "copyright", "author"};
String[] values = {"sunway technology company", "copyright 2002", "turbochen@163.com"};
// 取得使用者根節點下的 /com/sunway/spc 節點
Preferences prefs = Preferences.userRoot().node("/com/sunway/spc");
// 寫入鍵值對
for (int i = 0; i < keys.length; i++) {
prefs.put(keys[i], values[i]);
}
// 匯出為 XML 檔案(備份/遷移)
try (FileOutputStream fos = new FileOutputStream("prefsdemo.xml")) {
prefs.exportNode(fos);
} catch (Exception e) {
System.err.println("Cannot export nodes: " + e);
}
// 刪除節點(取消註解以清除)
// try { prefs.removeNode(); } catch (BackingStoreException e) {}
}
}
regedit,搜尋 sunway,可在 HKEY_CURRENT_USER\Software\JavaSoft\Prefs\com\sunway\spc 看到寫入的鍵值。prefs.get(key, defaultValue):讀取字串值。prefs.getInt(key, default)、getLong()、getBoolean() 等型別方法。prefs.keys()、childrenNames():列舉鍵與子節點。prefs.remove(key):刪除單一鍵值。prefs.sync()、flush():強制同步至持久儲存。/com/example/app)避免衝突。Preferences.systemRoot() 需管理員權限,通常用於安裝時設定。