<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

    統(tǒng)計

    留言簿(23)

    積分與排名

    優(yōu)秀學習網(wǎng)站

    友情連接

    閱讀排行榜

    評論排行榜

    將數(shù)據(jù)寫入注冊表

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

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

    ???現(xiàn)在好了,JDK1.4為我們提供的java.util.prefs包,為我們提供了另一種選擇,里面有一個Preferences類,能讓以上的工作變得極其輕松!

    ????寫VB程序的人常常用SaveSetting函數(shù)和getSettging來存取注冊表中的用戶設定數(shù)據(jù)。而Java的Preferences類也提供了類似的機制。
    Preferences類在不同的平臺中有不同的實現(xiàn)方式。而在Windows平臺中,Preferences是將數(shù)據(jù)保存在注冊表中的,而在其它平臺中的實現(xiàn)我就不得而知了(我對Linux等系統(tǒng)都不太了解).
    但不管怎樣,都是通過相同的接口來使用的,程序作者可以不管實現(xiàn)細節(jié)。

    一、建立Preferences對象
    為了區(qū)分不同的應用程序的參數(shù)項,在建立Preferences時要指定一個節(jié)點路徑。
    Preferences是一個抽象類,提供了一系列靜態(tài)方法和抽象方法來操作參數(shù)項:

    抽象方法:
    Preferences userData = Preferences.userNodeForPackage(this);
    Preferences sysData = Preferences.systemNodeForPackage(this);
    這兩個方法是從指定的類所在的包(package)返回一個節(jié)點路徑,如this是javax.swing.JComponent,則返回/javax/swing

    靜態(tài)方法:
    Preferences userData = Preferences.userRoot().node("/com/sunway/spc");
    Preferences sysData = Preferences.systemRoot().node("/com/sunway/spc");

    以上每種方式提供了兩套操作方法。其中一套是用戶參數(shù)項,另一套是系統(tǒng)參數(shù)項。
    在Windows平臺中,用戶參數(shù)項在注冊表中的根節(jié)點是:
    HKEY_CURRENT_USER\Software\JavaSoft\Prefs

    系統(tǒng)參數(shù)項在注冊表中的根節(jié)點是:
    HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs
    而我們指定的節(jié)點路徑是位于這些根節(jié)點之下的.

    二、如何讀寫數(shù)據(jù)
    Preferences提供了多種類型數(shù)據(jù)的讀寫方法。 先來看寫(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方法的第二個參數(shù)需要我們?yōu)樗付ㄈ笔〉膮?shù)。
    除了以上方式之外,Preferences還允許我們將它的數(shù)據(jù)導出到一個XML文件保存:
    void exportNode(OutputStream os)
    void exportSubtree(OutputStream os)
    我們可以導出一個節(jié)點,或是導出整個子節(jié)點樹。

    三、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節(jié)點參數(shù)項*/
        Preferences prefsdemo =
          Preferences.userRoot().node("/com/sunway/spc");
    
        /* 儲存參數(shù)項*/
        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);
        }
    
        /* 去掉注釋可以清除注冊表中的參數(shù)項*/
        /*    try
          {
             prefsdemo.removeNode();
          } catch (BackingStoreException e)
          {
          } */
    
      }
    }
    
    
    運行的結(jié)果是在注冊表中添加了相應數(shù)據(jù):






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

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

    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/開源資料

    主站蜘蛛池模板: 亚洲AV福利天堂一区二区三| 免费毛片在线看不用播放器| 亚洲人成电影在线天堂| 性做久久久久免费观看| 蜜臀98精品国产免费观看| 欧洲美女大片免费播放器视频| 亚洲性色高清完整版在线观看| 亚洲熟妇无码八AV在线播放| 日韩一级视频免费观看| 国产妇乱子伦视频免费| 野花香高清在线观看视频播放免费| 色多多免费视频观看区一区| 亚洲色图激情文学| 亚洲视频网站在线观看| 亚洲大尺度无码无码专区| 久久久久亚洲AV成人网人人网站| 亚洲av永久无码精品秋霞电影秋| 91情国产l精品国产亚洲区 | 97se亚洲综合在线| 国产偷v国产偷v亚洲高清| 最近免费mv在线电影| 国产一精品一AV一免费| 中文字幕免费在线看线人动作大片 | 亚洲精品午夜无码专区| 亚洲А∨精品天堂在线| 久久久久国产精品免费网站| 精品国产免费一区二区三区| 国内成人精品亚洲日本语音| 亚洲AV美女一区二区三区| 亚洲精品无码高潮喷水在线| 久久国产成人精品国产成人亚洲| yy6080久久亚洲精品| 亚洲av午夜精品一区二区三区| 日韩免费a级在线观看| 在线观看免费亚洲| 日本高清色本免费现在观看| 国产精品黄页在线播放免费| 国产男女猛烈无遮挡免费视频网站| 日本19禁啪啪无遮挡免费动图| 噜噜嘿在线视频免费观看| 日本特黄特黄刺激大片免费|