Javaでレジストリを読む方式PreferencesとjRegistryを話します。


本論文では主にJavaがレジストリを読む2つの方法でPreferencesとjRegistryの関連内容を紹介します。
javaプログラムは「write onece,run everywhere」なので、javaでレジストリを読んで書きます。そのプログラムはプラットフォームにまたがります。JAVAのレジストリに対する操作は、jdk 1.4以前のバージョンでは不可能であり、JNIでしか実現できない。しかし、jdk 1.4の後に提供されるprefsパッケージはwindowsレジストリを操作することができますが、rootはSOFTWARE/JavaSoft/prefsの下で死ぬことになりました。この二つの困難のためでしょう。また、いわゆるプラットフォームとは関係なく、windowsに対する依存も配慮しなければなりません。以下では、レジストリの操作を両方から説明する。
一、JDKを使って提供するPreferences類
まずPreferencesの対象を得ると、このオブジェクトは、レジストリのどの位置に情報を書き込むか、すなわちノードを規定しています。その後、Put(String key、String value)やputInt()、tDouble()...などを利用して、関連項目の割当値を与えます。以下はデモプログラムです。

import java.util.prefs.*; 
public class Registery { 
  String[] keys = {"version", "initial", "creator"}; 
  String[] values = {"1.3", "ini.mp3", "[email protected]"}; 
 //             
  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(); 
  } 
} 
上のコードを実行するとレジストリのHKEY_になります。LOCAL_MACHINE\Software\JavaSoft\prefs\javaplayer項の下で関連値を書き込みました。
最後に何時を説明しますか?
  • あなたのノードのイニシャルは大文字ではなく、レジストリの項目の前に「/」を追加しました。
  • レジストリの値をXMLファイルに導入することもできます。具体的な方法は関連文書に参照してください。
  • コードの中のPreferences pre=Preferences.system Root().node(javaplayer);Preferences pre=Preferences.userRoot().node(javaplayer);該当するHKEY_LOCAL_MACHINEはHKEY_になります。LOCAL_US ERです。
  • 二、jRegistryでレジストリを操作する
    jRegistryはJNIでWINDOWSレジストリAPIをカプセル化し、java開発者がwindowsレジストリを訪問するのに便利です。まず、jRegistryKey.jarとjRegistryKey.dllを紹介します。この二つのファイルはjRegistryを使ってレジストリを操作するために必要なファイルです。一つはjarカバンで、java類を含むファイルです。一つはダイナミックリンクライブラリファイルで、レジストリにアクセスするために必要なローカルコード(すなわちC/C+)を提供します。
    使用手順を詳しく紹介します。
  • JBuilderのメニューProject->Project Properties->Required LibriesにjRegistryKey.jarを追加したり、環境変数classpathにjarファイルを追加したりします。
  • はjRegistryKey.dllを工事の現在のディレクトリの下に置きます。
  • アクセスレジストリクラスでimportこの文:import ca.beq.util.win 32.registry.*。このカバンの中には二つの種類があります。RegistryKeyとRegistry Valueです。RegistryKeyはレジストリキーのjavaであり、creat()とdelete()方法の作成と削除key、エニュメレート・サブキーと値、setとgetキーの値などを提供している。RegistryValue is the Java?representation of a registry value.
  • コードを実現
  • 新しいkeyを作成します。
  • 
    RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, 
     "Software\\BEQ Technologies"); 
    r.create(); 
  • サブキーを作成します。
  • 
    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.toStering()はキーmyValueに対応するキーだけで、myValueキーに対応する値データを得るにはStering 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 
    以下はデモプログラムです。ご参考ください。
    
    // 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の全部の内容を話しました。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。