java.util.Preferences 数据管理
java.util.Preferences 这是一个抽象类,具体有什么用呢?主要用于保存用户或系统相关的数据( 比如: 我们希望某个用户设置自己的主题,下次再登录进系统时,仍然是这个主题... ),具体的作用功能什么的我不做多的介绍...
由于这个类属于抽象类,所以不能直接通过new来创建,不过它提供了几个static method ,其实底层还是通过调用子类的实现来操作的..
Preferences的数据是可以跨平台的,在Windows下,设置的这些属性会添加到'注册表'中,Linux 或 Unix 我没有研究过...
不多说,直接贴出源代码(代码中有详细的注释):
package com.lixing.util;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
/**
* Preferences有两种保存文件的方式:
* 1. sysRoot 与系统有关的用户配置文件,此文件只要是系统用户都可以访问
* 2. userRoot 与用户有关的用户配置文件,只有该用户才可以访问
* 但两者的操作方法完全一样
*
* @author Administrator
*
*/
public class PreferencesTest {
private String[] keys = { "userName", "userPwd", "userEmail" };
private String[] values = { "Lixing", "123456", "[email protected]" };
/**
* 设置Preferences的值
* @param userRoot
*/
private void setPreference(Preferences userRoot) {
for (int i = 0; i < keys.length; i++) {
userRoot.put(keys[i], values[i]);
}
}
/**
* 获得Preferences的指定值
* @param userRoot
*/
private void getPreference(Preferences userRoot){
System.out.println( "userName: " + userRoot.get("userName", "佚名") );
System.out.println( "userPwd: " + userRoot.get("userPwd", "0000") );
System.out.println( "userEmail: " + userRoot.get("userEmail", "[email protected]") );
}
/**
* 移除Preferences的首层包
* @param userRoot
*/
private void removeNode(Preferences userRoot){
try {
userRoot.removeNode();
} catch (BackingStoreException e) {
e.printStackTrace();
}
System.out.println( "removeNode success" );
}
/**
* 以树型结构导出为XML
* @param userRoot
*/
private void exportSubTree(Preferences userRoot) {
OutputStream os = null;
File file =new File("preferences.xml");
try {
os = new FileOutputStream( file );
userRoot.exportSubtree(os);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (BackingStoreException e) {
e.printStackTrace();
} finally {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println( "export tree success filename " + file.getName() );
}
public static void main(String[] args) {
PreferencesTest test = new PreferencesTest();
//以包的方式建立用户配置,目的就是防止冲突,便于管理
Preferences userRoot = Preferences.userNodeForPackage(PreferencesTest.class);
test.setPreference(userRoot);
test.exportSubTree(userRoot);
test.getPreference(userRoot);
test.removeNode(userRoot);
}
}
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
/**
* Preferences有两种保存文件的方式:
* 1. sysRoot 与系统有关的用户配置文件,此文件只要是系统用户都可以访问
* 2. userRoot 与用户有关的用户配置文件,只有该用户才可以访问
* 但两者的操作方法完全一样
*
* @author Administrator
*
*/
public class PreferencesTest {
private String[] keys = { "userName", "userPwd", "userEmail" };
private String[] values = { "Lixing", "123456", "[email protected]" };
/**
* 设置Preferences的值
* @param userRoot
*/
private void setPreference(Preferences userRoot) {
for (int i = 0; i < keys.length; i++) {
userRoot.put(keys[i], values[i]);
}
}
/**
* 获得Preferences的指定值
* @param userRoot
*/
private void getPreference(Preferences userRoot){
System.out.println( "userName: " + userRoot.get("userName", "佚名") );
System.out.println( "userPwd: " + userRoot.get("userPwd", "0000") );
System.out.println( "userEmail: " + userRoot.get("userEmail", "[email protected]") );
}
/**
* 移除Preferences的首层包
* @param userRoot
*/
private void removeNode(Preferences userRoot){
try {
userRoot.removeNode();
} catch (BackingStoreException e) {
e.printStackTrace();
}
System.out.println( "removeNode success" );
}
/**
* 以树型结构导出为XML
* @param userRoot
*/
private void exportSubTree(Preferences userRoot) {
OutputStream os = null;
File file =new File("preferences.xml");
try {
os = new FileOutputStream( file );
userRoot.exportSubtree(os);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (BackingStoreException e) {
e.printStackTrace();
} finally {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println( "export tree success filename " + file.getName() );
}
public static void main(String[] args) {
PreferencesTest test = new PreferencesTest();
//以包的方式建立用户配置,目的就是防止冲突,便于管理
Preferences userRoot = Preferences.userNodeForPackage(PreferencesTest.class);
test.setPreference(userRoot);
test.exportSubTree(userRoot);
test.getPreference(userRoot);
test.removeNode(userRoot);
}
}
转载于:https://blog.51cto.com/kinglixing/968777