千里冰封
          JAVA 濃香四溢
          posts - 151,comments - 2801,trackbacks - 0

          在我們寫程序的時(shí)候,有時(shí)會(huì)要求保存一些數(shù)據(jù),比如用戶名或者別的,但是這樣數(shù)據(jù)又不是保存在程序同一目錄下,這樣做太明顯了,也不太安全,那怎么辦呢?這個(gè)時(shí)候,如果能把數(shù)據(jù)保存到注冊(cè)表里面去,那該多好,一來(lái)隱蔽,二來(lái)方便,不至于在程序目錄下生成一大片文件.
          在JAVA里面,可以利用java.util.prefs.Preferences來(lái)對(duì)注冊(cè)表進(jìn)行操作,我們先看一下例子吧

          /*
           * Test3.java
           * 
           * Created on 2007-9-20, 18:41:41
           * 
           * To change this template, choose Tools | Templates
           * and open the template in the editor.
           
          */

          package test1;

          import java.util.prefs.Preferences;

          /**
           *
           * 
          @author hadeslee
           
          */
          public class Test3 {
              
              
          public static void main(String[] args)throws Exception {
                  Preferences pre
          =Preferences.systemNodeForPackage(Test3.class);
                  pre.put(
          "userName""hadeslee");
                  pre.putInt(
          "age"25);
                  pre.flush();
                  Preferences now
          =Preferences.systemNodeForPackage(Test3.class);
                  System.out.println(now.get(
          "userName""為空"));
                  System.out.println(now.getInt(
          "age"0));
                  
              }
          }

          這是一個(gè)最簡(jiǎn)單的例子,第一句就是根據(jù)包得到一個(gè)節(jié)點(diǎn),然后把一些值放進(jìn)去,可以放String,boolean,int,long,float,double等值 ,如果你想存入對(duì)象的話,可以把對(duì)象序列化成byte[],然后再存進(jìn)來(lái),然后讀也是一樣的,我們這樣操作就像是在操作一個(gè)Map一個(gè),所有的值都是存在這個(gè)映射里面.

          那么它們保存在哪里呢?

          如果選的是systemNode...則保存在[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs]

          如果選的是userNode....   則保存在[HKEY_CURRENT_USER\Software\JavaSoft\Prefs]
          的子節(jié)點(diǎn)下面


          不過(guò)話又說(shuō)回來(lái),如果我們想程序跨平臺(tái)的話,這樣是不太好的,我在linux上試過(guò),每次程序退出,我設(shè)定的值都沒(méi)有了,因?yàn)閘inux下面沒(méi)有像windows一樣的注冊(cè)表,不知道linux下SUN是怎么實(shí)現(xiàn)的,為了可移植性,最好還是用java.uitl.Properties這個(gè)類,根據(jù)一個(gè)文本映射文件來(lái)進(jìn)行值的操作,不過(guò)它也有不好的地方,它只能存入String對(duì)象,像byte[]就存不了了,如果要存的東西太復(fù)雜的話,干脆直接用數(shù)據(jù)庫(kù)吧.:)


          盡管千里冰封
          依然擁有晴空

          你我共同品味JAVA的濃香.
          posted on 2007-09-20 19:15 千里冰封 閱讀(5221) 評(píng)論(12)  編輯  收藏 所屬分類: JAVASE

          FeedBack:
          # re: JAVA操作windows注冊(cè)表
          2007-09-20 21:39 | teasp
          # re: JAVA操作windows注冊(cè)表
          2007-09-21 08:10 | Pande
          java.util.prefs.Preferences是跨平臺(tái)的,linux下保存在home目錄下的一個(gè)文件里  回復(fù)  更多評(píng)論
            
          # re: JAVA操作windows注冊(cè)表
          2007-09-21 09:13 | 千里冰封
          我在ubuntu下面試了,確實(shí)是保存不了,我每次都讀不到  回復(fù)  更多評(píng)論
            
          # re: JAVA操作windows注冊(cè)表
          2007-09-21 10:28 | 辛科
          這保存在注冊(cè)表的哪個(gè)地方了???  回復(fù)  更多評(píng)論
            
          # re: JAVA操作windows注冊(cè)表
          2007-09-21 10:32 | 千里冰封
          @辛科
          如果選的是systemNode...則保存在[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs]

          如果選的是userNode....則保存在
          [HKEY_CURRENT_USER\Software\JavaSoft\Prefs]
          的子節(jié)點(diǎn)下面  回復(fù)  更多評(píng)論
            
          # re: JAVA操作windows注冊(cè)表
          2007-09-21 11:51 | 蔣家狂潮
          新鮮,收藏了  回復(fù)  更多評(píng)論
            
          # re: JAVA操作windows注冊(cè)表
          2007-09-23 11:26 | jht
          呵呵,挺意思  回復(fù)  更多評(píng)論
            
          # re: JAVA操作windows注冊(cè)表
          2007-09-24 11:11 | Ming
          先收藏了,用時(shí)再細(xì)看  回復(fù)  更多評(píng)論
            
          # re: JAVA操作windows注冊(cè)表
          2007-12-28 15:23 | d
          sddsdddd  回復(fù)  更多評(píng)論
            
          # re: JAVA操作windows注冊(cè)表
          2008-05-09 19:26 | heavens
          覺(jué)得用jni更好些,java自帶的prefs包太受局限了  回復(fù)  更多評(píng)論
            
          # re: JAVA操作windows注冊(cè)表
          2008-12-03 23:20 | mykoma
          這是第二次來(lái)到您的博客...

          只能說(shuō):很厲害  回復(fù)  更多評(píng)論
            
          # re: JAVA操作windows注冊(cè)表
          2008-12-03 23:21 | mykoma
          希望您能夠加點(diǎn)注釋..那樣看著會(huì)更容易懂  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 霞浦县| 铜山县| 五河县| 渭南市| 远安县| 土默特左旗| 潼南县| 昭平县| 新乡县| 兴隆县| 达日县| 云安县| 仁化县| 莱阳市| 库尔勒市| 当雄县| 陈巴尔虎旗| 杭锦旗| 安仁县| 长海县| 开平市| 梁河县| 武强县| 永安市| 迭部县| 唐河县| 镇巴县| 黔南| 安泽县| 吉首市| 临清市| 兰州市| 合作市| 博客| 阿拉尔市| 晋江市| 绍兴县| 辽源市| 普洱| 都匀市| 平顶山市|