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 

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
 
C:盘下写入的文件如下:
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值