Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 398|回复: 0

[Java基础知识]使用J2SE API读取Properties文件的六种方法

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-1 03:50:34 | 显示全部楼层 |阅读模式
    使用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文件

    /**
    ** This program is free software.
    **
    ** You may redistribute it and/or modify it under the terms of the GNU
    ** General Public License as published by the Free Software Foundation.
    ** Version 2 of the license should be included with this distribution in
    ** the file LICENSE, as well as License.HTML. If the license is not
    ** included with this distribution, you may find a copy at the FSF web
    ** site at "www.gnu.org" or "www.fsf.org", or you may write to the
    ** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA.
    **
    ** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
    ** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
    ** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
    ** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
    ** REDISTRIBUTION OF THIS SOFTWARE.
    **/ 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文件

    /**
    ** This program is free software.
    **
    ** You may redistribute it and/or modify it under the terms of the GNU
    ** General Public License as published by the Free Software Foundation.
    ** Version 2 of the license should be included with this distribution in
    ** the file LICENSE, as well as License.html. If the license is not
    ** included with this distribution, you may find a copy at the FSF web
    ** site at "www.gnu.org" or "www.fsf.org", or you may write to the
    ** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA.
    **
    ** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
    ** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
    ** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
    ** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
    ** REDISTRIBUTION OF THIS SOFTWARE.
    **/
    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 = "file://com//kindani//test//LocalStrings.properties";
             p = JProperties.loadProperties(name, JProperties.BY_SYSTEM_CLASSLOADER);
             assertEquals(value, p.getProperty(key));         name = "file://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:
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-28 23:06 , Processed in 0.436105 second(s), 48 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表