zoukankan      html  css  js  c++  java
  • java如何操作注册表(Preferences类)(在windows的注册表中保存、读取)

       我们经常需要将我们的程序运行中的一些信息(比如在选项对话框中的设置)记录下来,以做便再次运行的时候不用再重写填写这些数据。这对改善软件的人机可用性方面是很有用的。比如:数据库监控、日志工具,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));
    }

  • 相关阅读:
    Net设计模式实例之适配器模式(Adapter Pattern)
    Net设计模式实例之单例模式( Singleton Pattern)
    Net设计模式实例之原型模式( Prototype Pattern)
    20个非常棒的Jquery实用工具
    Net设计模式实例之备忘录模式(Memento Pattern)
    10个免费的javascript富文本编辑器(jQuery and nonjQuery)
    <推荐>65个以自然风光为背景的UI设计
    Net设计模式实例之代理模式(Proxy Pattern)
    UML建模之状态图(Statechart Diagram)
    13个绚丽的Jquery 界面设计
  • 原文地址:https://www.cnblogs.com/qlong8807/p/3424834.html
Copyright © 2011-2022 走看看