JDK1.4下實現訪問WIN32注冊表
為 Java 1.4 增加的 java.util.prefs 包,通過提供對特定于實現的注冊表(例如,Windows 平臺上的 Windows 注冊表)的訪問能力,使您能夠操作用戶首選項數據和配置數據。
您是不是曾經需要保存程序的配置數據但卻不知應將數據存儲在哪里? 雖然您可以使用屬性文件或資源束獲取這些信息,但 Java 平臺從未指定過用于存儲這些文件的標準位置。JSR 10 出現后一切都變了,它為 Java 1.4 API 提供增加的 java.util.prefs 包。存儲機制是特定于實現的細節,但程序員不必知道,也不必操心。對于 Windows 平臺,它的位置是在“Windows 注冊表”。 您雖然不能夠對注冊表自由控制,但您的確可以通過一個公共根節點訪問所有的應用程序。
開始
命名很恰當的 Preferences 類提供操作首選項的基本框架。這個類提供了一系列靜態和抽象方法來操作兩套首選項(其中一套是用戶首選項,另一套是系統首選項)中的其中一套。 使用靜態方法,您會得到一個特定于平臺的實現,就象 WindowsPreferences 類; 然后您可以使用由這個特定于平臺的實現實現的抽象方法來做這項工作。
用包將程序的首選項分組是個好習慣,可以避免與其它應用程序的命名沖突。 當您查找 Preferences 對象時,只需傳遞包的名稱。在使用非靜態方法時, 您可以傳遞對自身的引用(this),程序將為您確定查找的是哪個包,如清單 1 所示。
清單 1. 從非靜態方法獲取 Preferences 對象
Preferences userPrefs = Preferences.userNodeForPackage(this);
Preferences sysPrefs = Preferences.systemNodeForPackage(this);
但是,如果您使用的是靜態方法,您就必須得到根節點并自己提供包,如清單 2 所示。
清單 2. 從靜態方法獲取 Preferences 對象
Preferences userPrefs = Preferences.userRoot().node("/net/zukowski/ibm");
Preferences sysPrefs = Preferences.systemRoot().node("/net/zukowski/ibm");
有了進行操作的節點后,您就可以輕松地設置、獲取、除去和轉儲設置選項。只要把 Preferences 對象當作一個大的鍵 — 值散列表(這個表把樹形結構中的鍵組織起來)。可它不是“集合框架”( Collections Framework)的部件,(關于“集合框架”的更多信息,請參閱參考資料)。