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);
  }
}
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章