您的位置:首页 > Web前端

Java Preferences 使用方法

2015-08-12 14:58 567 查看
JDK1.4为我们提供的java.util.prefs包,里面有一个Preferences类,能让以上的工作变得极其轻松!

写VB程序的人常常用SaveSetting函数和getSettging来存取注册表中的用户设定数据。而Java的Preferences类也提供了类似的机制。

如果我说Java里面可以不使用JNI的手段操作Windows的注册表你信不信?很多软件的菜单里都有“Setting”或“Preferences”这样的选项用来设定或修改软件的配置,这些配置信息可以保存到一个像上面所述的配置文件当中,如果是Windows平台下,也可能会保存到系统注册表中。从JDK
1.4开始,Java在java.util下加入了一个专门处理用户和系统配置信息的java.util.prefs包,其中一个类Preferences是一种比较“高级”的玩意。从本质上讲,Preferences本身是一个与平台无关的东西,但不同的OS对它的SPI(Service Provider Interface)的实现却是与平台相关的,因此,在不同的系统中你可能看到首选项保存为本地文件、LDAP目录项、数据库条目等,像在Windows平台下,它就保存到了系统注册表中,Linux中它存在于用户目录下的一个隐藏文件中。不仅如此,你还可以把首选项导出为XML文件或从XML文件导入。 

主要类与方法和描述 

systemNodeForPackage() //根据指定的Class对象得到一个Preferences对象,这个对象的注册表路径是从“HKEY_LOCAL_MACHINE\”开始的 

systemRoot() //得到以注册表路径HKEY_LOCAL_MACHINE\SOFTWARE\Javasoft\Prefs 为根结点的Preferences对象 

userNodeForPackage() //根据指定的Class对象得到一个Preferences对象,这个对象的注册表路径是从“HKEY_CURRENT_USER\”开始的 

userRoot() //得到以注册表路径HKEY_CURRENT_USER\SOFTWARE\Javasoft\Prefs 为根结点的Preferences对象 

putXXX() //设置一个属性的值,这里XXX可以为基本数值型类型,如int、long等,但首字母大写,表示参数为相应的类型,也可以不写而直接用put,参数则为字符串 

getXXX() //得到一个属性的值 

exportNode() //将全部首选项导出为一个XML文件 

exportSubtree() //将部分首选项导出为一个XML文件 

importPreferences() //从XML文件导入首选项 

    你可以按如下步骤保存数据:

Preferences myPrefs1 = Preferences.userNodeForPackage(this);// 这种方法是在“HKEY_CURRENT_USER\”下按当前类的路径建立一个注册表项

Preferences myPrefs2 = Preferences.systemNodeForPackage(this);// 这种方法是在“HKEY_LOCAL_MACHINE\”下按当前类的路径建立一个注册表项

Preferences myPrefs3 = Preferences.userRoot().node("com.jungleford.demo");// 这种方法是在“HKEY_CURRENT_USER\SOFTWARE\Javasoft\Prefs\”下按“com\jungleford\demo”的路径建立一个注册表项

Preferences myPrefs4 = Preferences.systemRoot().node("com.jungleford.demo");// 这种方法是在“HKEY_LOCAL_MACHINE\SOFTWARE\Javasoft\Prefs\”下按“com\jungleford\demo”的路径建立一个注册表项

myPrefs1.putInt("key1", 10);

myPrefs1.putDouble("key2", -7.15);

myPrefs1.put("key3", "value3");

FileOutputStream out = new FileOutputStream("prefs.xml");

myPrefs1.exportNode(out);

最终如果导出来可以看到的XML文件的形式如下;
----------------------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">

<preferences EXTERNAL_XML_VERSION="1.0">

  <root type="user"> <!--userRoot()--->

    <map/>

    <node name="PreferenceTest">

      <map>

        <entry key="Test2" value="Hello Europa"/>

        <entry key="Test3" value="45"/>

      </map>

    </node>

  </root>

</preferences>

----------------------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">

<preferences EXTERNAL_XML_VERSION="1.0">

  <root type="system">

    <map/>

    <node name="fanfu">

      <map>

        <entry key="Test2" value="Hello Europa"/>

        <entry key="Test3" value="45"/>

      </map>

    </node>

  </root>

</preferences>

----------------------
相应的JAVA代码
----------------------
import java.util.prefs.Preferences;       

import java.io.*;     

public class PreferenceTest {       

private Preferences prefs;       

     

public void setPreference() {       

// This will define a node in which the preferences can be stored       

prefs = Preferences.userRoot().node("fanfu");       

String ID1 = "Test1";       

String ID2 = "Test2";       

String ID3 = "Test3";       

     

    

prefs.remove(ID1);  

prefs.remove(ID2);  

prefs.remove(ID3); 

// First we will get the values       

// Define a boolean value  

System.out.println(prefs.getBoolean(ID1, true));       

// Define a string with default "Hello World       

System.out.println(prefs.get(ID2, "Hello World"));       

// Define a integer with default 50       

System.out.println(prefs.getInt(ID3, 50));       

     

// Now set the values       

prefs.putBoolean(ID1, false);       

prefs.put(ID2, "Hello Europa");       

prefs.putInt(ID3, 45);     

  System.out.println("------------------------------");   

  System.out.println(prefs.getBoolean(ID1, true));    

  System.out.println(prefs.get(ID2, "Hello World"));  

  System.out.println(prefs.getInt(ID3, 50));   

// Delete the preference settings for the first value       

prefs.remove(ID1);  

System.out.println("------------------------------");   

    System.out.println(prefs.getBoolean(ID1, true));    

  System.out.println(prefs.get(ID2, "Hello World"));  

  System.out.println(prefs.getInt(ID3, 50));      

}       

     

public static void main(String[] args) throws Exception {       

     PreferenceTest test = new PreferenceTest();       

     test.setPreference();   

     

     for(String key : test.prefs.keys())

     {

          System.out.println(test.prefs.get(key,null));

     }

     FileOutputStream out = new FileOutputStream("out2.xml");

     test.prefs.exportNode(out);

}       

}   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Preferences