<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Dict.CN 在線詞典, 英語學習, 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統計

    留言簿(23)

    積分與排名

    優秀學習網站

    友情連接

    閱讀排行榜

    評論排行榜

    將數據寫入注冊表

    我們經常需要將我們的程序中的設定,如窗口位置,開啟過的文件,用戶的選項設定等數據記錄下來,以做便用戶下一次開啟程序能繼續使用這些數據。
    以前我們通常的做法是使用Properties類,它提供以下方法:
    void load(InputStream inStream)
    void store(OutputStream out, String header)
    String getProperty(String key, String defaultValue)
    String getProperty(String key)

    這些方法讓我們很容易的存取設定數據。
    另外的辦法是使用ResourceBundle這個類來儲存設定數據,甚至有些程序作者使用一個自定結構的文件來儲存設定數據。

    ???現在好了,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","turbochen@163.com"};
    
        /* 建立一個位于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)
          {
          } */
    
      }
    }
    
    
    運行的結果是在注冊表中添加了相應數據:






    四、用下面方法可取回存在注冊表中的數據:

    import java.io.*;
    import java.util.prefs.*;
    
    public class PrefsDemo1 {
      public static void main(String args[])
      {
       
        /* 建立一個位于user root下的/com/sunway/spc節點參數項*/
        Preferences prefsdemo =
          Preferences.userRoot().node("/com/sunway/spc");
    
         System.out.println(prefsdemo.get("sunway","OK"));
    
      }
    }
    
    運行結果:

    C:\java>java PrefsDemo1
    sunway technology company

    C:\java

    以上介紹了Preferences功能,要了解更多Preferences的方法,請 查閱JDK文檔java.util.prefs.Preferences

    posted on 2006-04-26 15:40 都市淘沙者 閱讀(376) 評論(0)  編輯  收藏 所屬分類: Java Basic/Lucene/開源資料

    主站蜘蛛池模板: 亚洲国产精品成人午夜在线观看| 亚洲色偷偷综合亚洲AVYP| 91视频国产免费| h片在线免费观看| 182tv免费视视频线路一二三| 人妻丰满熟妇无码区免费| 久久国产乱子精品免费女| 免费一级不卡毛片| 99热精品在线免费观看| 免费A级毛片无码视频| 亚洲免费网站在线观看| 日韩欧毛片免费视频| 免费国产黄线在线观看| 免费看美女让人桶尿口| 性做久久久久免费看| 亚洲av无码天堂一区二区三区 | 亚洲精品第一国产综合亚AV| 亚洲综合无码无在线观看| 亚洲国产精品日韩av不卡在线| 国产成人高清亚洲一区91| 人与动性xxxxx免费| 国产色爽免费无码视频| 亚洲Av无码乱码在线观看性色 | 亚洲高清中文字幕免费| 成人免费看黄20分钟| 国产精品国产自线拍免费软件 | 最近最新高清免费中文字幕 | 久久久WWW免费人成精品| 男人天堂免费视频| 99re6热视频精品免费观看| 久九九精品免费视频| 国产99视频精品免费视频7| 亚洲欭美日韩颜射在线二| 自怕偷自怕亚洲精品| 在线aⅴ亚洲中文字幕| 黄色三级三级免费看| 黄网站免费在线观看| 无码国产精品一区二区免费| 免费在线观看亚洲| 亚洲AV无码码潮喷在线观看| 亚洲xxxxxx|