最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Java讀寫注冊表的方式Preferences與jRegistry

 更新時間:2018年02月01日 11:26:48   作者:司馬懿字仲達  
這篇文章主要介紹了淺談Java讀寫注冊表的方式Preferences與jRegistry,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下

本文研究的主要是Java 讀寫注冊表的兩種方式 Preferences 與 jRegistry的相關內(nèi)容,具體介紹如下。

由于java程序是“write once, run everywhere”,用java讀寫注冊表,那程序的跨平臺性就差了。java對注冊表的操作,在jdk1.4以前的版本中,那是不可能的,只能用JNI來實現(xiàn);然而jdk1.4之后提供的prefs包可以操作windows注冊表,不過定死了root只在SOFTWARE/JavaSoft/prefs下,估計也是出于這種兩難吧,又要保證所謂平臺無關,還要照顧大家對windows的依賴。下面將從兩方面來介紹對注冊表的操作。

一、 使用JDK提供的Preferences類

首先得到Preferences的一個對象,這個對象就規(guī)定了你要在注冊表的哪個位置寫入信息,即節(jié)點.然后再用put(String key,String value)或者putInt(),tDouble()…等來給有關項賦值。下面是Demo程序。

import java.util.prefs.*; 
public class Registery { 
  String[] keys = {"version", "initial", "creator"}; 
  String[] values = {"1.3", "ini.mp3", "caokai1818@sina.com"}; 
 //把相應的值儲存到變量中去 
  public void writeValue() { 
 // HKEY_LOCAL_MACHINE\Software\JavaSoft\prefs下寫入注冊表值. 
    Preferences pre = Preferences.systemRoot().node("/javaplayer"); 
    for (int i = 0; i < keys.length; i++) { 
      pre.put(keys, values); 
    } 
  } 
  public static void main(String[] args) { 
    Registery reg = new Registery(); 
    reg.writeValue(); 
  } 
} 

執(zhí)行上面的代碼則在注冊表的HKEY_LOCAL_MACHINE\Software\JavaSoft\prefs\javaplayer項下寫入了有關值.

最后再說明幾點:

  • 你的節(jié)點的首字母不要大寫,不然在注冊表中的項前就加了一個“/”;
  • 注冊表中的值也可以導入到一個XML文件中,具體方法見有關文檔.
  • 如果把代碼中的Preferences pre = Preferences.systemRoot().node("/javaplayer");換成Preferences pre = Preferences.userRoot().node("/javaplayer");則相應的 HKEY_LOCAL_MACHINE就成為HKEY_LOCAL_USER。

二、 用jRegistry 來操作注冊表

jRegistry它是用JNI來封裝WINDOWS注冊表API,方便了java開發(fā)者訪問windows注冊表。首先介紹一下jRegistryKey.jar和jRegistryKey.dll,這兩個文件是使用jRegistry來操作注冊表所必需的文件:一個是jar包,是一個包括了java類的文件;一個是動態(tài)鏈接庫文件,提供了訪問注冊表所需的本地代碼(即C/C++)。

下面詳細介紹一下使用流程:

  • 在JBuilder的菜單Project->Project Properties->Required Libraries中添加jRegistryKey.jar或在環(huán)境變量classpath中添加該jar文件;
  • 將jRegistryKey.dll放在工程的當前目錄下;
  • 在訪問注冊表類中import該語句:import ca.beq.util.win32.registry.*; 該包中有兩個類:RegistryKey和RegistryValue。其中RegistryKey是注冊表鍵的java表示,它提供了creat()和delete()方法創(chuàng)建和刪除key,枚舉子鍵和值,set和get鍵的值等;RegistryValue is the Java? representation of a registry value (defined as a name, a type, and data).

實現(xiàn)代碼

  • 創(chuàng)建一個新key:
RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, 
 "Software\\BEQ Technologies"); 
r.create(); 
  • 創(chuàng)建一個子鍵:
RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software"); 
r.createSubkey("BEQ Technologies"); 
  • 刪除一個已存在的鍵值:
try { 
  RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, 
"Software\\BEQ Technologies"); 
  r.delete(); 
} // try 
catch(RegistryException re) { 
  re.printStackTrace(); 
} // catch 
  • 枚舉子鍵:
RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software"); 
if(r.hasSubkeys()) { 
  Iterator i = r.subkeys(); 
  while(i.hasNext()) { 
   RegistryKey x = (RegistryKey)i.next(); 
   System.out.println(x.toString()); 
  } // while 
} // if 
  • 讀注冊表中鍵的值:
RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, 
"Software\\BEQ Technologies"); 
if(r.hasValue("myValue")) { 
  RegistryValue v = r.getValue("myValue"); 
  System.out.println(v.toString());// 
} // if 

注:v.toString()僅是鍵myValue對應的鍵值,若要得到myValue鍵對應的值數(shù)據(jù),則需要String str = v.getDate().toSting();

  • 設置注冊表中鍵的值:
RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\BEQ Technologies"); 
RegistryValue v = new RegistryValue("myVal", ValueType.REG_SZ, "data"); 
r.setValue(v); 
  • 枚舉某鍵的所有值:
RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software"); 
if(r.hasValues()) { 
  Iterator i = r.values(); 
  while(i.hasNext()) { 
   RegistryValue v = (RegistryValue)i.next(); 
   System.out.println(v.toString()); 
  } // while 
} // if 

下面是一個demo程序,僅供參考。

// create a new key, "Test", under HKLM 
RegistryKey r = new RegistryKey(RootKey.HKEY_LOCAL_MACHINE, "Test"); 
if(!r.exists()) { 
r.create(); 
} // if  

// create value entries 
RegistryValue v = new RegistryValue("aString", ValueType.REG_SZ, "test"); 
r.setValue(v); 

v.setName("aDword"); 
v.setType(ValueType.REG_DWORD); 
v.setData(new Integer(0x1001001)); 
r.setValue(v); 

// read value entries 
Iterator i = r.values(); 
while(i.hasNext()) { 
v = (RegistryValue)i.next(); 
System.out.println(v.toString()); 
} // while 

// delete registry key 
r.delete(); 

總結

以上就是本文關于淺談Java讀寫注冊表的方式Preferences與jRegistry的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關文章

  • java 字符串分割的三種方法(總結)

    java 字符串分割的三種方法(總結)

    下面小編就為大家?guī)硪黄猨ava 字符串分割的三種方法(總結)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • JDK SPI機制以及自定義SPI類加載問題

    JDK SPI機制以及自定義SPI類加載問題

    這篇文章主要介紹了JDK SPI機制以及自定義SPI類加載問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java判斷絕對值的方法總結

    Java判斷絕對值的方法總結

    在本文中作者為大家分享了兩種Java判斷絕對值的方法,對此有興趣的朋友可以和小編一起學習下。
    2018-02-02
  • 解決spring-data-jpa mysql建表編碼問題

    解決spring-data-jpa mysql建表編碼問題

    這篇文章主要介紹了解決spring-data-jpa mysql建表編碼問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java中的synchronized重量級鎖解析

    Java中的synchronized重量級鎖解析

    這篇文章主要介紹了Java中的synchronized重量級鎖解析,內(nèi)核需要去申請這個互斥量,必須要進入內(nèi)核態(tài),也就是這里需要用戶態(tài),內(nèi)核態(tài)的切換,狀態(tài)的切換,開銷是比較大的,這就是重型鎖的一個弊端,需要的朋友可以參考下
    2024-01-01
  • spring boot加載freemarker模板路徑的方法

    spring boot加載freemarker模板路徑的方法

    這篇文章主要介紹了spring boot加載freemarker模板路徑的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 一文搞懂java中類及static關鍵字執(zhí)行順序

    一文搞懂java中類及static關鍵字執(zhí)行順序

    這篇文章主要介紹了一文搞懂java中類及static關鍵字執(zhí)行順序,文章通過類的生命周期展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Servlet簡單實現(xiàn)登錄功能

    Servlet簡單實現(xiàn)登錄功能

    這篇文章主要為大家詳細介紹了Servlet簡單實現(xiàn)登錄功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • 在Java中如何比較兩個對象淺析

    在Java中如何比較兩個對象淺析

    在工作中我們經(jīng)常會遇到這樣的需求——比較兩個對象是否相等,如果不相等的話,取出不相等的字段,這篇文章主要給大家介紹了關于在Java中如何比較兩個對象的相關資料,需要的朋友可以參考下
    2021-11-11
  • Mybatis實現(xiàn)批量操作8種小結

    Mybatis實現(xiàn)批量操作8種小結

    本文對Mybatis的五種批處理方式進行了性能測試,包括批量新增和批量修改,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-10-10

最新評論

平山县| 榆林市| 乐业县| 鄂伦春自治旗| 专栏| 冷水江市| 灵台县| 榆中县| 博罗县| 泰顺县| 景宁| 张家界市| 衡东县| 拜泉县| 南华县| 苍梧县| 垣曲县| 瓮安县| 福清市| 前郭尔| 新乐市| 黑山县| 什邡市| 龙陵县| 昭平县| 江北区| 文水县| 夏津县| 惠水县| 长寿区| 安化县| 红河县| 咸阳市| 邯郸市| 孝义市| 栾城县| 和静县| 白沙| 中宁县| 阿克陶县| 广平县|