国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

JDK1.4下實現(xiàn)訪問WIN32注冊表

2019-11-17 06:13:26
字體:
供稿:網(wǎng)友

  為 java 1.4 增加的 java.util.PRefs 包,通過提供對特定于實現(xiàn)的注冊表(例如,Windows 平臺上的 Windows 注冊表)的訪問能力,使您能夠操作用戶首選項數(shù)據(jù)和配置數(shù)據(jù)。

  您是不是曾經(jīng)需要保存程序的配置數(shù)據(jù)但卻不知應(yīng)將數(shù)據(jù)存儲在哪里? 雖然您可以使用屬性文件或資源束獲取這些信息,但 Java 平臺從未指定過用于存儲這些文件的標準位置。JSR 10 出現(xiàn)后一切都變了,它為 Java 1.4 API 提供增加的 java.util.prefs 包。存儲機制是特定于實現(xiàn)的細節(jié),但程序員不必知道,也不必操心。對于 Windows 平臺,它的位置是在“Windows 注冊表”。 您雖然不能夠?qū)ψ员碜杂煽刂疲拇_可以通過一個公共根節(jié)點訪問所有的應(yīng)用程序。

  開始

  命名很恰當?shù)?Preferences 類提供操作首選項的基本框架。這個類提供了一系列靜態(tài)和抽象方法來操作兩套首選項(其中一套是用戶首選項,另一套是系統(tǒng)首選項)中的其中一套。 使用靜態(tài)方法,您會得到一個特定于平臺的實現(xiàn),就象 WindowsPreferences 類; 然后您可以使用由這個特定于平臺的實現(xiàn)實現(xiàn)的抽象方法來做這項工作。

  用包將程序的首選項分組是個好習慣,可以避免與其它應(yīng)用程序的命名沖突。 當您查找 Preferences 對象時,只需傳遞包的名稱。在使用非靜態(tài)方法時, 您可以傳遞對自身的引用(this),程序?qū)槟_定查找的是哪個包,如清單 1 所示。

  清單 1. 從非靜態(tài)方法獲取 Preferences 對象

Preferences userPrefs = Preferences.userNodeForPackage(this);
Preferences sysPrefs = Preferences.systemNodeForPackage(this);

  但是,假如您使用的是靜態(tài)方法,您就必須得到根節(jié)點并自己提供包,如清單 2 所示。

  清單 2. 從靜態(tài)方法獲取 Preferences 對象

Preferences userPrefs = Preferences.userRoot().node("/net/zukowski/ibm");
Preferences sysPrefs = Preferences.systemRoot().node("/net/zukowski/ibm");

  有了進行操作的節(jié)點后,您就可以輕松地設(shè)置、獲取、除去和轉(zhuǎn)儲設(shè)置選項。只要把 Preferences 對象當作一個大的鍵 — 值散列表(這個表把樹形結(jié)構(gòu)中的鍵組織起來)。可它不是“集合框架”( Collections Framework)的部件,(關(guān)于“集合框架”的更多信息,請參閱參考資料)。 寫數(shù)據(jù)

  我們將從討論如何存儲首選項開始。Preferences 類提供一系列 put() 方法,如下所示,用于存儲值。除支持基本的字符串之外,您還可以存儲布爾值、雙精度數(shù)、浮點數(shù)、整型數(shù)、長整型數(shù)和字節(jié)數(shù)組(考慮序列化)。
助手方法采用適當?shù)臄?shù)據(jù)類型并執(zhí)行必要的轉(zhuǎn)換以便將數(shù)據(jù)存儲為字符串。

put(String key, String value)
putBoolean(String key, boolean value)
putByteArray(String key, byte value[])
putDouble(String key, double value)
putFloat(String key, float value)
putInt(String key, int value)
putLong(String key, long value)

  所有的 put() 方法都返回一個 void。假如存儲機制不可用,將拋出一個BackingStoreException。

  注重:一個特定首選項的鍵長度被限制為 Preferences.MAX_KEY_LENGTH(80)個字符,而它的值被限制為 Preferences.MAX_VALUE_LENGTH(8192)個字符。

  讀數(shù)據(jù)

  可通過下面所示的一系列 get() 方法獲取特定的首選項。與寫數(shù)據(jù)相似,每種受支持的數(shù)據(jù)類型,都有自己的與眾不同的方法。但與獲取數(shù)據(jù)時不同的是,在備用存儲不可用,或有些東西尚未保存時您必須提供缺省值。這要求您確保自己的程序至少要有合理的缺省設(shè)置選項。

get(String key, String default)
getBoolean(String key, boolean default)
getByteArray(String key, byte default[])
getDouble(String key, double default)
getFloat(String key, float default)
getInt(String key, int default)
getLong(String key, long default)

  假如您對首選項名稱不確定,您可以用 keys() 方法查找一列與節(jié)點相關(guān)聯(lián)的鍵。這個方法返回節(jié)點的 String[]。 除獲取和存儲個別首選項以及獲取一列要害字之外,您還可以用 clear()、remove() 和 removeNode() 除去節(jié)點和值。

  轉(zhuǎn)儲數(shù)據(jù)

  假如您想在系統(tǒng)提供的備用存儲器之外保存和恢復(fù)首選項,您可以在 xml 格式的文檔中執(zhí)行這些操作。您可以用 eXPortNode() 導(dǎo)出一個節(jié)點或用 exportSuBTree() 導(dǎo)出整個子樹。信息以 UTF-8 格式存儲。然后,當您想恢復(fù)信息時,可使用 importPreferences() 方法。

  偵聽

  “好奇心會害死一只貓”,但假如您對弄清除首選項何時改變很感愛好,您可以注冊一個 NodeChangeListener 或 PreferenceChangeListener,而不考慮隨之而來的后果。NodeChangeListener 負責通知您節(jié)點被添加和除去的時間, 而 PreferenceChangeListener 告訴您值的變化。這些都緊跟著基本 JavaBeans 組件事件用 add/removeNodeChangeListener(NodeChangeListener) 和 add/removePreferenceChangeListener() 方法處理結(jié)構(gòu)之后發(fā)生。基本上,您先實現(xiàn)偵聽器,然后注冊偵聽器,這樣您會發(fā)現(xiàn)將來的變化。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 米易县| 伊金霍洛旗| 从化市| 元谋县| 龙岩市| 隆安县| 门头沟区| 上高县| 旬阳县| 奈曼旗| 高要市| 班玛县| 长阳| 新乡市| 珲春市| 巢湖市| 庐江县| 霍林郭勒市| 汉中市| 城固县| 绿春县| 松原市| 罗平县| 孙吴县| 台北县| 湖口县| 民权县| 荃湾区| 鄄城县| 沅江市| 化州市| 南丹县| 仁化县| 潞城市| 定襄县| 永仁县| 左贡县| 紫阳县| 伊吾县| 香港| 龙南县|