java核心技术卷2 第11章第11小节.代码比较长

解决方案 »

  1.   

    我是摘的别人的哦。不是我自己写的。JDK1.4为我们提供的java.util.prefs包,里面有一个Preferences类,能让以上的工作变得极其轻松!
    写VB程序的人常常用SaveSetting函数和getSettging来存取注册表中的用户设定数据。而Java的Preferences类也提供了类似的机制。
    Preferences类在不同的平台中有不同的实现方式。而在Windows平台中,Preferences是将数据保存在注册表中的,而在其它平台中的实现我就不得而知了(我对Linux等系统都不太了解).
    但不管怎样,都是通过相同的接口来使用的,程序作者可以不管实现细节。建立Preferences对象为了区分不同的应用程序的参数项,在建立Preferences时要指定一个节点路径。
    Preferences是一个抽象类,提供了一系列静态方法和抽象方法来操作参数项:
    抽象方法:
    Preferences userData = Preferences.userNodeForPackage(this);
    Preferences sysData = Preferences.systemNodeForPackage(this);
    这两个方法是从指定的物件所在的包(package)返回一个节点路径,如this是javax.swing.JComponent,则返回/javax/swing
    静态方法:
    Preferences userData = Preferences.userRoot().node("/com/sunway/spc");
    Preferences sysData = Preferences.systemRoot().node("/com/sunway/spc");以上每种方式提供了两套操作方法。其中一套是用户参数项,另一套是系统参数项。
    在Windows平台中,用户参数项在注册表中的根节点是
    HKEY_CURRENT_USER\Software\JavaSoft\Prefs
    系统参数项在注册表中的根节点是HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs
    而我们指定的节点路径是位于这些根节点之下的.如何读写数据
    Preferences提供了多种类型数据的读写方法。
    先来看写(put)的方法,
    put(String key, String value)
    putBoolean(String key, boolean value)
    putByteArray(String key, byte value[])
    putDouble(String key, double value)
    putFloat(String key, float value)
    putInt(String key, int value)
    putLong(String key, long value)
    下面的是读(get)的方法,
    get(String key, String default)
    getBoolean(String key, boolean default)
    getByteArray(String key, byte default[])
    getDouble(String key, double default)
    getFloat(String key, float default)
    getInt(String key, int default)
    getLong(String key, long default)
    注意,每一种get方法的第二个参数需要我们为它指定缺省的参数。
    除了以上方式之外,Preferences还允许我们将它的数据导出到一个XML文件保存,
    void exportNode(OutputStream os)
    void exportSubtree(OutputStream os)
    我们可以导出一个节点,或是导出整个子节点树.Preferences的一个演示
    以上的讲解足可以写一个示例来看看Preferences是如何为我们工作的,看看下面的例子:
    import java.io.*;
    import java.util.prefs.*;public class PrefsDemo {
     public static void main(String args[])
     {
       String keys[] =
         {"sunway","copyright","author"};
       String values[] =
         {"sunway technology company","copyright 2002","[email protected]"};   /* 建立一个位于user root下的/com/sunway/spc节点参数项*/
       Preferences prefsdemo =
         Preferences.userRoot().node("/com/sunway/spc");   /* 储存参数项*/
       for (int i=0 ; i < keys.length; i++)
       {
         prefsdemo.put(keys[i], values[i]);
       }   /* 导出到XML文件 */
       try
       {
         FileOutputStream fos = new FileOutputStream("prefsdemo.xml");
         prefsdemo.exportNode(fos);
       } catch (Exception e)
       {
         System.err.println("Cannot export nodes: " + e);
       }   /* 去掉注释可以清除注册表中的参数项*/
    /*    try
         {
            prefsdemo.removeNode();
         } catch (BackingStoreException e)
         {
         } */ }
    }以上介绍了Preferences功能,要了解更多Preferences的方法,请查阅JDK文档java.util.prefs.Preferences