自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JDK1.4下對(duì)WIN32注冊(cè)表的訪問實(shí)現(xiàn)

開發(fā) 后端
針對(duì)注冊(cè)表的訪問問題, Java 1.4有特殊的訪問能力,使您能夠操作用戶首選項(xiàng)數(shù)據(jù)和配置數(shù)據(jù)。那么具體是什么呢?本文向你介紹JDK1.4下對(duì)WIN32注冊(cè)表的訪問實(shí)現(xiàn)。

針對(duì)注冊(cè)表的訪問問題, Java 1.4 增加的 java.util.prefs 包,通過提供對(duì)特定于實(shí)現(xiàn)的注冊(cè)表(例如,Windows 平臺(tái)上的 Windows 注冊(cè)表)的訪問能力,使您能夠操作用戶首選項(xiàng)數(shù)據(jù)和配置數(shù)據(jù)。

您是不是曾經(jīng)需要保存程序的配置數(shù)據(jù)但卻不知應(yīng)將數(shù)據(jù)存儲(chǔ)在哪里? 雖然您可以使用屬性文件或資源束獲取這些信息,但 Java 平臺(tái)從未指定過用于存儲(chǔ)這些文件的標(biāo)準(zhǔn)位置。JSR 10 出現(xiàn)后一切都變了,它為 Java 1.4 API 提供增加的 java.util.prefs 包。存儲(chǔ)機(jī)制是特定于實(shí)現(xiàn)的細(xì)節(jié),但程序員不必知道,也不必操心。對(duì)于 Windows 平臺(tái),它的位置是在“Windows 注冊(cè)表”。 您雖然不能夠?qū)ψ?cè)表自由控制,但您的確可以通過一個(gè)公共根節(jié)點(diǎn)訪問所有的應(yīng)用程序。

開始

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

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

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

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

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

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

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

有了進(jìn)行操作的節(jié)點(diǎn)后,您就可以輕松地設(shè)置、獲取、除去和轉(zhuǎn)儲(chǔ)設(shè)置選項(xiàng)。只要把 Preferences 對(duì)象當(dāng)作一個(gè)大的鍵 — 值散列表(這個(gè)表把樹形結(jié)構(gòu)中的鍵組織起來)??伤皇恰凹峡蚣堋保?Collections Framework)的部件,(關(guān)于“集合框架”的更多信息,請(qǐng)參閱參考資料)。

寫數(shù)據(jù)

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

  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() 方法都返回一個(gè) void。如果存儲(chǔ)機(jī)制不可用,將拋出一個(gè)BackingStoreException。

注意:一個(gè)特定首選項(xiàng)的鍵長(zhǎng)度被限制為 Preferences.MAX_KEY_LENGTH(80)個(gè)字符,而它的值被限制為 Preferences.MAX_VALUE_LENGTH(8192)個(gè)字符。

讀數(shù)據(jù)

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

  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

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

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

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

偵聽

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

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

【編輯推薦】

  1. JDK1.6在LINUX下的安裝配置
  2. JDK1.5中新的語言特征淺析
  3. 在JDK7 b50中將實(shí)現(xiàn)正則表達(dá)式命名捕獲組
  4. JDK日志框架介紹及其主要功能淺析
  5. JDK日志框架之自定義日志Handler淺析
責(zé)任編輯:仲衡 來源: 百度空間
相關(guān)推薦

2009-07-07 11:17:14

JDK1.4環(huán)境配置

2009-07-09 11:43:22

JDK1.4assert

2009-07-09 09:09:46

JDK1.4

2009-02-01 10:10:00

Java資格認(rèn)證JDK1.4JDK1.6

2009-07-09 11:21:08

JDK1.4安裝圖解

2010-05-25 17:45:00

MySQL備份

2011-04-21 09:10:16

2009-07-07 12:09:04

注冊(cè)表開發(fā).NET Compac

2009-10-12 16:08:14

VB.NET訪問注冊(cè)表

2009-10-16 09:40:54

VB.NET訪問注冊(cè)表

2012-05-10 17:01:24

Win XP注冊(cè)表

2011-08-04 17:04:42

2011-09-16 14:22:31

注冊(cè)表windowsVist

2011-08-04 16:37:09

注冊(cè)表編輯器注冊(cè)表

2011-08-03 18:01:40

注冊(cè)表

2009-10-22 18:09:10

linux虛擬機(jī)

2009-07-22 18:55:29

2011-08-03 15:40:09

注冊(cè)表注冊(cè)表編輯器

2010-06-09 09:05:35

非安裝版MySQL

2009-08-21 09:43:49

C#編輯注冊(cè)表
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)