首页 > 代码库 > 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
 
测试类:
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Enumeration;import java.util.Properties;public class test {    /**     * @param args     * @throws Exception      */    public static void main(String[] args) throws Exception {        //a=111        //b=222        String realPath="d:\\p.txt";        //将properties文件加载到输入字节流中         InputStream is = new FileInputStream(realPath);         //创建一个Properties容器         Properties prop = new Properties();         //从流中加载properties文件信息         prop.load(is);                 getPro(prop);               export(prop);          importer(prop);        is.close();    }            public static void getPro(Properties prop) throws Exception{        //读取某一key值        System.out.println(prop.getProperty("b"));      //读取某一key值,没有则输出默认值        System.out.println(prop.getProperty("c","default"));      //读取某一key值        System.out.println(prop.get("b"));                //循环输出配置信息         for (Object key : prop.keySet()) {                 System.out.println(key + "=" + prop.get(key));         }                      prop.setProperty("d", "dddd");        System.out.println("setProperty后");        //循环输出配置信息         Enumeration e=prop.propertyNames();        while (e.hasMoreElements()) {              System.out.println(e.nextElement());        }               System.out.println("-------------------getPro-------------------");    }            public static void export(Properties prop) throws IOException{        //定义一个输出流         OutputStream os1 = new FileOutputStream("d:\\ttt.xml");         OutputStream os2 = new FileOutputStream("d:\\ttt.properties");         //从Properties对象导出导出到xml         prop.storeToXML(os1, "我从properties导出的XML配置文件");         //从Properties对象导出properties文件         prop.store(os2, "我从properties导出的properties配置文件");         os1.close();         os2.close();                 System.out.println("-------------------export-------------------");    }        public static void importer(Properties prop) throws Exception, FileNotFoundException, IOException{        //从xml加载配置信息,填充Properties容器         prop.loadFromXML(new FileInputStream("d:\\ttt.xml"));         //循环输出配置信息         System.out.println("我从导出的xml加载配置文件信息!");         for (Object key : prop.keySet()) {                 System.out.println(key + "=" + prop.get(key));         }         System.out.println("-------------------importer-------------------");    }}

输出

 

d:盘下写入的文件如下:

 

java.util.Properties类 学习笔记