• java.util.Properties类


    java.util.Properties类 学习笔记
     
    学习目标:
     
    1、认识properties文件,理解其含义,会正确创建properties文件。
    2、会使用java.util.Properties类来操作properties文件。
    3、掌握相对路径,能正确书写一个properties文件的相对路径。
     
    一、认识properties文件
     
    1、properties文件是一个文本文件
    2、properties文件的语法有两种,一种是注释,一种属性配置。
     注    释:前面加上#号
     属性配置:以“键=值”的方式书写一个属性的配置信息。
    3、properties文件的一个属性配置信息值可以换行,但键不可以换行。值换行用“”表示。
    4、properties的属性配置键值前后的空格在解析时候会被忽略。
    5、properties文件可以只有键而没有值。也可以仅有键和等号而没有值,但无论如何一个属性配置不能没有键。
     
     
    例如,下面一个properties文件:
    #正确的properties配置文件 
    aaa=1 
        11 
    b 
    bb    =     222
     
    #格式良好的properties文件 
    aaa=111 
    bbb=222
     
    二、解读java.util.Properties类
     
    1、Properties类的层次结构
    java.lang.Object
      java.util.Dictionary<K,V>
          java.util.Hashtable<Object,Object>
              java.util.Properties
     
    从层次机构看,Properties类实现了Map接口,因为HashTable实现了Map接口,因此Properties类本质上是一种简单的Map容器。
    实际上,Properties类本身表示了对一种Map结构的操作。properties文件本身就表示了一个“键值对”的集合。因此,Properties类属于集合容器的家族,在使用前应该创建一个Properties的容器,实际上就是创建一个默认不带参数的Properties对象。以后通过别的方式给里面添加“键值对”。
     
    2、properties文件与Properties类的关系
    通过properties文件可以填充Properties类。
    也可以通过xml文件来填充Properties类。
    可以通过绝对路径方式加载Properties文件信息,也可以使用相对路径加载。
     
    三、实践
     
    1、以绝对相对路径方式加载properties文件信息。
    2、将Properties对象持久化到一个properties文件或者一个xml文件中。
    3、修改并持久化properties文件。
     
    测试代码:
     
    测试的properties文件:
    #格式良好的properties文件 
    aaa=111 
    bbb=222
     
    测试类:
    package stu; 

    import java.io.*; 
    import java.util.Properties; 

    /** 
    * Properties类测试 
    * User: xiaohui 
    * Date: 2008-11-4 21:04:54 
    */
     
    public class TestProperties { 
            public static void main(String args[]) throws IOException { 
                    testProperties(); 
                    test1(); 
            } 

            public static void testProperties() throws IOException { 
                    System.out.println("------------testProperties-------------"); 
                    //将properties文件加载到输入字节流中 
                    InputStream is = new FileInputStream("D:\myprojects\lession4\src\stu\ttt.properties"); 
                    //创建一个Properties容器 
                    Properties prop = new Properties(); 
                    //从流中加载properties文件信息 
                    prop.load(is); 
                    //循环输出配置信息 
                    for (Object key : prop.keySet()) { 
                            System.out.println(key + "=" + prop.get(key)); 
                    } 

                    //定义一个输出流 
                    OutputStream os1 = new FileOutputStream("C:\ttt.xml"); 
                    OutputStream os2 = new FileOutputStream("C:\ttt.properties"); 

                    //从Properties对象导出导出到xml 
                    prop.storeToXML(os1, "我从properties导出的XML配置文件"); 
                    //从Properties对象导出properties文件 
                    prop.store(os2, "我从properties导出的XML配置文件"); 

                    is.close(); 
                    os1.close(); 
                    os2.close(); 

                    //从xml加载配置信息,填充Properties容器 
                    prop.loadFromXML(new FileInputStream("C:\ttt.xml")); 
                    //循环输出配置信息 
                    System.out.println("我从导出的xml加载配置文件信息!"); 
                    for (Object key : prop.keySet()) { 
                            System.out.println(key + "=" + prop.get(key)); 
                    } 

                    //修改Properties对象,并持久化到一个文件 
                    prop.put("呵呵呵", "嘎嘎嘎"); 
                    OutputStream os3 = new FileOutputStream("C:\ttt1.xml"); 
                    prop.storeToXML(os3, "我从properties导出的XML配置文件"); 
                    os3.close(); 
            } 

            /** 
             * 以相对路径方式加载properties文件 
             * 
             * @throws IOException 
             */
     
            public static void test1() throws IOException { 
                    System.out.println("------------test1-------------"); 
                    Properties p = new Properties(); 
                    p.load(TestProperties.class.getResourceAsStream("/stu/ttt.properties")); 
                    for (Object key : p.keySet()) { 
                            System.out.println(key + "=" + p.get(key)); 
                    } 
            } 
    }
     
     
    运行结果:
    ------------testProperties------------- 
    bbb=222 
    aaa=111 
    我从导出的xml加载配置文件信息! 
    bbb=222 
    aaa=111 
    ------------test1------------- 
    bbb=222 
    aaa=111 

    Process finished with exit code 0
     
     
     
    java读取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) 

     
     
     
     
     
  • 相关阅读:
    iOS 发布流程
    iOS 生产证书
    iOS自定义字体及类目
    iOS动画特效
    iOS调用相机,相册,上传头像
    iOS中UITextField 使用全面解析
    iOS开发UITableView基本使用方法总结
    iOS开发网络数据之AFNetworking使用
    苹果App Store开发者帐户从申请,验证,到发布应用(4)
    苹果App Store开发者帐户从申请,验证,到发布应用(3)
  • 原文地址:https://www.cnblogs.com/zailushang117/p/3467277.html
Copyright © 2020-2023  润新知