熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

Java的秘密:將應用程序的設定存在哪裡

2022-06-13   來源: JSP教程 

  我們經常需要將我們的程序中的設定如窗口位置開啟過的文件用戶的選項設定等數據記錄下來以做便用戶下一次開啟程序能繼續使用這些數據以前我們通常的做法是使用Properties類它提供以下方法:
  
  void load(InputStream inStream)
  void store(OutputStream out String header)
  String getProperty(String key
  String defaultValue)
  String getProperty(String key)
  
  這些方法讓我們很容易的存取設定數據另外的辦法是使用ResourceBundle這個類來儲存設定數據甚至有些程序作者使用一個自定結構的文件來儲存設定數據但不管怎樣最讓程序作者頭痛的是我該將這些數據保存在哪?
  
  現在好了JDK為我們提供的javautilprefs包裡面有一個Preferences類能讓以上的工作變得極其輕松!
  
  寫VB程序的人常常用SaveSetting函數和getSettging來存取注冊表中的用戶設定數據而Java的Preferences類也提供了類似的機制
  
  Preferences類在不同的平台中有不同的實現方式而在Windows平台中Preferences是將數據保存在注冊表中的
  
  建立Preferences對象
  
  為了區分不同的應用程序的參數項在建立Preferences時要指定一個節點路徑Preferences是一個抽象類提供了一系列靜態方法和抽象方法來操作參數項:
  
  抽象方法:
  
  Preferences userData =
  PreferencesuserNodeForPackage(this);
  Preferences sysData =
  PreferencessystemNodeForPackage(this);
  
  這兩個方法是從指定的物件所在的包(package)返回一個節點路徑如this是javaxswingJComponent則返回/javax/swing
  
  靜態方法:
  
  Preferences userData =
  PreferencesuserRoot()
  node(/com/sunway/spc);
  Preferences sysData =
  PreferencessystemRoot()
  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 javaio*;
  import javautilprefs*;
  
  public class PrefsDemo
  {
  public static void main(String args[])
  {
  String keys[] =
  {sunwaycopyrightauthor};
  String values[] =
  {sunway technology company
  copyright };
  
  /* 建立一個位於user root下的
  /com/sunway/spc節點參數項*/
  Preferences prefsdemo =
  PreferencesuserRoot()
  node(/com/sunway/spc);
  
  /* 儲存參數項*/
  for (int i= ; i < keyslength; i++)
  {
  prefsdemoput(keys[i] values[i]);
  }
  
  /* 導出到XML文件 */
  try
  {
  FileOutputStream fos = new
  FileOutputStream(prefsdemoxml);
  prefsdemoexportNode(fos);
  } catch (Exception e)
  {
  Systemerrprintln
  (Cannot export nodes: + e);
  }
  
  /* 去掉注釋可以清除注冊表中的參數項*/
  /*
  try
  {
  prefsdemoremoveNode();
  } catch (BackingStoreException e)
  {
  } */
  
  }
  }
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19784.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.