日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JDK1.4下對WIN32注冊表的訪問實現(xiàn)

針對注冊表的訪問問題, 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 對象

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

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

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

 
 
 
  1. Preferences userPrefs = Preferences.userRoot().node("/net/zukowski/ibm");
  2. 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ù)存儲為字符串。

 
 
 
  1. put(String key, String value) 
  2. putBoolean(String key, boolean value) 
  3. putByteArray(String key, byte value[]) 
  4. putDouble(String key, double value) 
  5. putFloat(String key, float value) 
  6. putInt(String key, int value) 
  7. 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è)置選項。

 
 
 
  1. get(String key, String default) 
  2. getBoolean(String key, boolean default) 
  3. getByteArray(String key, byte default[]) 
  4. getDouble(String key, double default) 
  5. getFloat(String key, float default) 
  6. getInt(String key, int default) 
  7. getLong(String key, long default)

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

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

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

偵聽

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

那么通過介紹JDK1.4下對WIN32注冊表的訪問實現(xiàn),大家是不是對這個JDK1.4的特殊能力感興趣呢?


當前標題:JDK1.4下對WIN32注冊表的訪問實現(xiàn)
文章網(wǎng)址:http://m.5511xx.com/article/dphccoc.html