网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  j2se api读取properties文件的六种方法     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:89次  录入:管理员--2007-11-16  
 

使用j2se api读取properties文件的六种方法:

1.使用java.util.properties类的load()方法

示例: inputstream in = lnew bufferedinputstream(new fileinputstream(name));

properties p = new properties();

p.load(in);

2.使用java.util.resourcebundle类的getbundle()方法

示例: resourcebundle rb = resourcebundle.getbundle(name, locale.getdefault());

3.使用java.util.propertyresourcebundle类的构造函数

示例: inputstream in = new bufferedinputstream(new fileinputstream(name));

resourcebundle rb = new propertyresourcebundle(in);

4.使用class变量的getresourceasstream()方法

示例: inputstream in = jproperties.class.getresourceasstream(name);

properties p = new properties();

p.load(in);

5.使用class.getclassloader()所得到的java.lang.classloader的getresourceasstream()方法

示例: inputstream in = jproperties.class.getclassloader().getresourceasstream(name);

properties p = new properties();

p.load(in);

6.使用java.lang.classloader类的getsystemresourceasstream()静态方法

示例: inputstream in = classloader.getsystemresourceasstream(name);

properties p = new properties();

p.load(in);

补充

servlet中可以使用javax.servlet.servletcontext的getresourceasstream()方法

示例:inputstream in = context.getresourceasstream(path);

properties p = new properties();

p.load(in);

完整的示例:

jproperties.java文件

package com.kindani;

//import javax.servlet.servletcontext;
import java.util.*;
import java.io.inputstream;
import java.io.ioexception;
import java.io.bufferedinputstream;
import java.io.fileinputstream;

/**
 * 使用j2se api?取properties文件的六种方法
 * user: synform
 * date: 2005/07/12
 * time: 18:40:55
 * to change this template use file | settings | file templates.
 */
public class jproperties {

    public final static int by_properties = 1;
    public final static int by_resourcebundle = 2;
    public final static int by_propertyresourcebundle = 3;
    public final static int by_class = 4;
    public final static int by_classloader = 5;
    public final static int by_system_classloader = 6;

    public final static properties loadproperties(
final string name, final int type) throws ioexception {
        properties p = new properties();
        inputstream in = null;
        if (type == by_properties) {
            in = new bufferedinputstream(new fileinputstream(name));
            assert (in != null);
            p.load(in);
        } else if (type == by_resourcebundle) {
            resourcebundle rb = resourcebundle.getbundle(name, locale.getdefault());
            assert (rb != null);
            p = new resourcebundleadapter(rb);
        } else if (type == by_propertyresourcebundle) {
            in = new bufferedinputstream(new fileinputstream(name));
            assert (in != null);
            resourcebundle rb = new propertyresourcebundle(in);
            p = new resourcebundleadapter(rb);
        } else if (type == by_class) {
            assert (jproperties.class.equals(new jproperties().getclass()));
            in = jproperties.class.getresourceasstream(name);
            assert (in != null);
            p.load(in);
            //return new jproperties().getclass().getresourceasstream(name);
        } else if (type == by_classloader) {
            assert (jproperties.class.getclassloader().equals(
new jproperties().getclass().getclassloader()));
            in = jproperties.class.getclassloader().getresourceasstream(name);
            assert (in != null);
            p.load(in);
            //return new jproperties().getclass().
getclassloader().getresourceasstream(name);
        } else if (type == by_system_classloader) {
            in = classloader.getsystemresourceasstream(name);
            assert (in != null);
            p.load(in);
        }

        if (in != null) {
            in.close();
        }
        return p;

    }

    // ---------------------------------------------- servlet used
/*
    public static properties loadproperties(
servletcontext context, string path) throws ioexception {
        assert (context != null);
        inputstream in = context.getresourceasstream(path);
        assert (in != null);
        properties p = new properties();
        p.load(in);
        in.close();
        return p;
    }
*/

    // ---------------------------------------------- support class

    /**
     * resourcebundle adapter class.
     */
    public static class resourcebundleadapter extends properties {
        public resourcebundleadapter(resourcebundle rb) {
            assert (rb instanceof java.util.propertyresourcebundle);
            this.rb = rb;
            java.util.enumeration e = rb.getkeys();
            while (e.hasmoreelements()) {
                object o = e.nextelement();
                this.put(o, rb.getobject((string) o));
            }
        }

        private resourcebundle rb = null;

        public resourcebundle getbundle(string basename) {
            return resourcebundle.getbundle(basename);
        }

        public resourcebundle getbundle(string basename, locale locale) {
            return resourcebundle.getbundle(basename, locale);
        }

        public resourcebundle getbundle(string basename, 
locale locale, classloader loader) {
            return resourcebundle.getbundle(basename, locale, loader);
        }

        public enumeration<string> getkeys() {
            return rb.getkeys();
        }

        public locale getlocale() {
            return rb.getlocale();
        }

        public object getobject(string key) {
            return rb.getobject(key);
        }

        public string getstring(string key) {
            return rb.getstring(key);
        }

        public string[] getstringarray(string key) {
            return rb.getstringarray(key);
        }

        protected object handlegetobject(string key) {
            return ((propertyresourcebundle) rb).handlegetobject(key);
        }

    }

}

jpropertiestest.java文件

package com.kindani.test;

import junit.framework.*;
import com.kindani.jproperties;

//import javax.servlet.servletcontext;
import java.util.properties;

public class jpropertiestest extends testcase {
    jproperties jproperties;
    string key = "helloworld.title";
    string value = "hello world!";

    public void testloadproperties() throws exception {
        string name = null;
        properties p = new properties();

        name = "c:\\ideap\\properties4methods\\src\\com\\
kindani\\test\\localstrings.properties";
        p = jproperties.loadproperties(name, jproperties.by_properties);
        assertequals(value, p.getproperty(key));

        name = "com.kindani.test.localstrings";
        p = jproperties.loadproperties(name,jproperties.by_resourcebundle);
        assertequals(value, p.getproperty(key));
        assertequals(value,((jproperties.resourcebundleadapter)p).getstring(key));

        name = "c:\\ideap\\properties4methods\\src\\com\\
kindani\\test\\localstrings.properties";
        p = jproperties.loadproperties(name, jproperties.by_propertyresourcebundle);
        assertequals(value, p.getproperty(key));
        assertequals(value,((jproperties.resourcebundleadapter)p).getstring(key));

        name = "\\com\\kindani\\test\\localstrings.properties";
        p = jproperties.loadproperties(name, jproperties.by_system_classloader);
        assertequals(value, p.getproperty(key));

        name = "\\com\\kindani\\test\\localstrings.properties";
        p = jproperties.loadproperties(name, jproperties.by_classloader);
        assertequals(value, p.getproperty(key));

        name = "test\\localstrings.properties";
        p = jproperties.loadproperties(name, jproperties.by_class);
        assertequals(value, p.getproperty(key));
    }

/*
    public void testloadproperties2() throws exception {
        servletcontext context = null;
        string path = null;
        properties p = null;
        path = "/web-inf/classes/localstrings.properties";
        p = jproperties.loadproperties(context, path);
        assertequals(value, p.getproperty(key));
    }
*/
}

properties文件与jpropertiestest.java文件相同的目录下

localstrings.properties文件

# $id: localstrings.properties,v 1.1 2000/08/17 00:57:52 horwat exp $

# default localized resources for example servlets
# this locale is en_us

helloworld.title=hello world!

requestinfo.title=request information example
requestinfo.label.method=method:
requestinfo.label.requesturi=request uri:
requestinfo.label.protocol=protocol:
requestinfo.label.pathinfo=path info:
requestinfo.label.remoteaddr=remote address:

requestheader.title=request header example

requestparams.title=request parameters example
requestparams.params-in-req=parameters in this request:
requestparams.no-params=no parameters, please enter some
requestparams.firstname=first name:
requestparams.lastname=last name:

cookies.title=cookies example
cookies.cookies=your browser is sending the following cookies:
cookies.no-cookies=your browser isn't sending any cookies
cookies.make-cookie=create a cookie to send to your browser
cookies.name=name:
cookies.value=value:
cookies.set=you just sent the following cookie to your browser:

sessions.title=sessions example
sessions.id=session id:
sessions.created=created:
sessions.lastaccessed=last accessed:
sessions.data=the following data is in your session:
sessions.adddata=add data to your session
sessions.dataname=name of session attribute:
sessions.datavalue=value of session attribute:

 
 
上一篇: java se 6 入门之脚本引擎加大程序功能    下一篇: 技巧:使用java把文件/目录压缩成zip包
  相关文档
read-atleap-5-主逻辑1-的发表新闻 11-17
j2ee 与 ibm 对象-关系数据库系列连载三 11-17
@if 语句 11-16
使用gwt开发ajax应用程序 11-17
初始化引发的"stackoverflowerror" 异常 01-25
用corba创建client/server 程序 11-16
java理论与实践:垃圾收集简史 11-16
think in java 3rd 中文版2 11-17
初学applet 11-17
taglib 原理和实现:第四章 循环的tag 11-17
spring mvc框架的高级配置 11-17
j2ee基础篇 对log4j使用方法的简单讲解 11-16
确认java拥有足够的内存 11-17
学习j2me编程需要掌握的七种技术 11-17
rms 从入门到精通系列连载之一 11-17
java开发中关于hibernate对多表关联查询 05-23
编写高效的线程安全类 11-17
精通ejb【五】 11-17
.net的“无触式”配置:一个新的开发趋势 11-17
在midp应用程序中播放声音 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息