JAVA操作windows注册表

在我们写程序的时候,有时会要求保存一些数据,比如用户名或者别的,但是这样数据又不是保存在程序同一目录下,这样做太明显了,也不太安全,那怎么办呢?这个时候,如果能把数据保存到注册表里面去,那该多好,一来隐蔽,二来方便,不至于在程序目录下生成一大片文件.
在JAVA里面,可以利用java.util.prefs.Preferences来对注册表进行操作,我们先看一下例子吧

/*
 * 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 ));
        
    }
}

这是一个最简单的例子,第一句就是根据包得到一个节点,然后把一些值放进去,可以放String,boolean,int,long,float,double等值 ,如果你想存入对象的话,可以把对象序列化成byte[],然后再存进来,然后读也是一样的,我们这样操作就像是在操作一个Map一个,所有的值都是存在这个映射里面.

那么它们保存在哪里呢?

如果选的是systemNode...则保存在[HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Prefs]

如果选的是userNode....   则保存在[HKEY_CURRENT_USER/Software/JavaSoft/Prefs]
的子节点下面


不过话又说回来,如果我们想程序跨平台的话,这样是不太好的,我在linux上试过,每次程序退出,我设定的值都没有了,因为linux下面没有像windows一样的注册表,不知道linux下SUN是怎么实现的,为了可移植性,最好还是用java.uitl.Properties这个类,根据一个文本映射文件来进行值的操作,不过它也有不好的地方,它只能存入String对象,像byte[]就存不了了,如果要存的东西太复杂的话,干脆直接用数据库吧.:) 

原文:http://www.blogjava.net/hadeslee/archive/2007/09/20/146881.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值