Java语言就以其平台独立性而受到了许多编程者的选择,如果让它来操作注册表的话,好像就失去了它的这个特点,然而在实际的编程中,有时候我们很需要在注册表中存储软件的有关信息,以方便下次启动的时候初始化或者检查注册信息(假设我们在windows平台下)!那么究竟用java可以操作windows的注册表吗?
K3M*vd9f 在jdk1.4以前的版本中,那是不可能的,只能用JNI来实现,然而在1.4以及以后的版本中我们就可以用java.util.prefs包中的Preferences这个类来进行有关的操作!有关Preferences的有关构造函数和方法我在这里就不多说了,你可以去参考java的API文档!我就直接说说怎么来用代码实现吧!
bn2Av@Z? 首先得到Preferences的一个对象,这个对象就规定了你要在注册表的哪个位置写入信息,即节点.然后再用put(String key,String value)或者putInt(),tDouble()...等来给有关项赋值.
o~"lp;X 下面我就以我的java媒体播放器中的代码为例来详细说明一下:
Agbm~ import java.util.prefs.*;
F0 qR'^s EV5j%m]&t public class Registery{
/WeAF:d3p S7,bK*JVlg String[] keys = {"version","initial","creator"};
du{wyf^%#e String[] values = {"1.3","ini.mp3","
caokai1818@sina.com"};
Gg0j r #<v CAV > //把相应的值储存到变量中去
Yyw"H D<k{ public void writeValue(){
7F{JUB Md ZeQfEpR //在注册表的HKEY_LOCAL_MACHINE\Software\JavaSoft\prefs下写入注册表值.
R]4?qif Preferences pre = Preferences.systemRoot().node("/javaplayer");
rr|<5W[ for(int i = 0; i < keys.length; i++){
^A<W\d pre.put(keys,values);
Tc3U RCp }
0wz5. ' //上面也就规定了version=1.3,initial=ini.mp3,creator=caokai18182sina.com
T 9A45, }
((}~#B public static void main(String[] args){
E@"@Z8i Registery reg = new Registery();
5e --$XN reg.writeValue();
F"#<Ik$B" }
JZv&uGaE }
X?f="h%i #ya.< 执行上面的代码则在注册表的HKEY_LOCAL_MACHINE\Software\JavaSoft\prefs\javaplayer项下写入了有关值.
4Rv pKP E 最后再说明几点:
z~` Hng# 1:你的节点的首字母不要大写,不然在注册表中的项前就加了一个“/”;
YPz4H"ljeG 2:注册表中的值也可以导入到一个XML文件中,具体方法见有关文档.
4?k(.,d! 3:如果把代码中的Preferences pre = Preferences.systemRoot().node("/javaplayer"); 换成Preferences pre = Preferences.userRoot().node("/javaplayer");则相应的 HKEY_LOCAL_MACHINE就成为HKEY_LOCAL_USER
查看本文来源