java如何操作注册表(Preferences类)(在windows的注册表中保存、读取)

摘要:
JDK1.4提供了Preferences类。在java中。utilPrefs包。Preferences类在不同的平台上有不同的实现。例如,在Windows平台上,“首选项”将数据保存在注册表中。要区分不同应用程序的参数项,应在建立“首选项”时指定节点路径。Preferences是一个抽象类,它提供一系列静态和抽象方法来操作参数项:PreferencesuserData=Preferences。userNodeForPackage//获取用户配置节点PreferencessysData=Preferences。systemNodeForPackage//获取系统配置节点。

   我们经常需要将我们的程序运行中的一些信息(比如在选项对话框中的设置)记录下来,以做便再次运行的时候不用再重写填写这些数据。这对改善软件的人机可用性方面是很有用的。比如:数据库监控、日志工具,JDBMonitor在这方面做的是非常好的,以它的Swing界面监视器和数据库日志记录查询窗口中所有的配置信息(例如远程服务器地址、端口、数据库名称、JDBC驱动等等)都是被保存的,当再次运行的时候程序会自动加载这些配置信息,所以使用起来相当方便。

     保存加载配置文件有多种方式,比如xml文件、properties文件等,采用这些保存方式的一个问题就是如果程序是以jar,war 包等方式发布的那么这些配置文件就不能放在包中,因为包中的文件是不能在运行时改动的,只能放在磁盘的文件中,但是放在磁盘的文件中又很容易出现因为操作系统的差异、权限等问题造成程序的问题。


    JDK1.4中提供了Preferences类,在java.util.prefs包里面。Preferences类在不同的平台中有不同的实现方式。比如在Windows平台中,Preferences是将数据保存在注册表中的。

    为了区分不同的应用程序的参数项,在建立Preferences时要指定一个节点路径。
Preferences是一个抽象类,提供了一系列静态方法和抽象方法来操作参数项:
Preferences userData = Preferences.userNodeForPackage(this); //得到用户配置节点
Preferences sysData = Preferences.systemNodeForPackage(this); //得到系统配置节点。
    比如在windows中Preferences.userNodeForPackage代表得到 HKEY_CURRENT_USERSoftwareJavaSoftPrefs下的相对路径
Preferences.systemNodeForPackage代表得到   HKEY_LOCAL_MACHINESOFTWAREJavaSoftPrefs下的相对路径
(你可以通过regedit命令查看注册表)


    Preferences的读取、存储是非常容易的,存储只要调用put***方法就可以,读取调用get***即可,不同的put,get方法分别用于存取不同的数据类型,详细信息可以参考JavaDoc。


    以JDBMonitor的Swing界面监视器的连接对话框为例为大家分析,打开com.cownew.JDBMonitor.listenerImpl.sckListenerClient.ConnectConfigDialog,saveConfig()和loadConfig()分别就是保存和读取参数用了,这两个方法会在超类中被调用。可以看到代码实现非常简单:
protected void saveConfig()
{
   Preferences prefer = Preferences.userNodeForPackage(getClass());
   prefer.put(HOST_NAME,getHostName());
   prefer.putInt(PORT,getPort());
}

protected void loadConfig()
{
   Preferences prefer = Preferences.userNodeForPackage(getClass());
   setHostName(prefer.get(HOST_NAME,""));
   setPort(prefer.getInt(PORT,9527));
}

免责声明:文章转载自《java如何操作注册表(Preferences类)(在windows的注册表中保存、读取)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Freemarker常用技巧(三)Unity 宽度适配 NGUI下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Cmd不能运行,窗口闪一下就消失

          昨晚中病毒了,卡巴,360一直报警,删除文件。之后我的电脑命令提示窗口就开不开了。我运行cmd,但是窗口出来闪一下,就消失了。而且在C:/WINDOWS/system32下的cmd.exe直接双击还是不行。 我在网上百度了一上午。网上也有很多的答案,什么镜像劫持啊!中毒了啊!重装系统吧!……对我来说,全是没用的。最后看到了一个网友的评论...

远程桌面连接保存登陆用户以及密码(凭据)备份方法

凭据保存备份有两个部分,一个是远程桌面连接的历史记录,这些记录被保存在注册表下, HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientDefault 只要将这部分注册表导出备份即可,但是导出这个只有历史记录,并没有凭据信息,也就是保存的登录帐号密码,而这些信息是被存放在另外一个神奇的地方 于是第二...

Oracle自带的Universal Installer卸载存在问题

使用Oracle自带的Universal Installer卸载存在问题: 不干净,不完全,还有一些注册表残留,会影响到后来的安装。 所以,推荐使用手工卸载Oracle。 1.【win+R】->【services.msc】,关闭oracle所有的服务。 使用OUI(Oracle Universal Installer)卸载Oracle软件。“开始”-...

微服务高可用方案

微服务高可用方案 一、微服务的高可用 在注册中心、配置中心高可用方案之前,了解一下注册中心的工作原理,下面分为两个部分来解释,一是注册中心和各个微服务的注册表的获取与同步,二是注册中心如何去维护注册表。 1.1、注册表的获取与同步 Eureka Server和Eureka Client之间的关系,通过注册表来维护,而注册表的通过Eureka Server集...

Win7/8双系统共用蓝牙鼠标

相信不少同学的电脑都是Windows7/8双系统,在双系统切换的时候普通的鼠标并不会因为系统改变而无法使用,而由于蓝牙是一对一传输,当系统连接蓝牙设备的时候,会随机生成一个link ID,Win7 和win8 会生成不同的linkID。因此每次配对都会改变其link ID,所以导致不同OS的蓝牙不能共用,即使是同一蓝牙芯片也不可以。解决方法:首先需要在两个...

vc6.0安装过程中出现的问题——解决

这是我在安装vc6.0过程中曾经与到的几个问题。问题的答案是我从网上搜到的然后总结了一下。希望能够对仍然没有解决问题的朋友有所帮助。 问题一:Thelanguagedll'vb6chs.dll'couldnotbefound。解决方法:在安装文件夹中搜索vb6chs.dll文件然后复制到 c:windows/system32/文件夹中。也可以到已经安装好的...