服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

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

使用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:

扫描关注微信公众号