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

测试类:

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:盘下写入的文件如下:

时间: 2024-08-11 05:37:59

java.util.Properties类 学习笔记的相关文章

java.util.Properties类

Properties类很常用么,几乎每个项目,从j2se到j2ee每个项目都没离开过他,就算是jsp+servlet+jdbc的东西,jdbc的配置信息也是写Properties,国际化也是Properties,cdn也是Properties,memcached也是 Properties.总之java.utils.*无所不用,不所不在.. 小记下Properties: java.util.Properties是对properties这类配置文件的映射.支持key-value类型和xml类型两种.

使用java.util.Properties快速导入配置文件

1.java.util.Properties类继承关系 Properties类表示一组持久属性.属性可以被保存到流或从流中加载.属性列表中的每一个键及其相应的值是一个字符串. 继承关系: java.lang.Object java.util.Dictionary<K,V> java.util.Hashtable<Object,Object> java.util.Properties public class Properties extends Hashtable<Objec

java.util.properties

http://gimgen1026.iteye.com/blog/152023 Properties 类已不是新东西了,它在 Java 编程的早期就有了,并且几乎没有什么变化.J2SE 的 Tiger 版本增强了这个类,不仅可以用它在单独一行中指定用等号分隔的多个键-值对,还可以用XML 文件装载和保存这些键-值对.在 驯服 Tiger的这一期文章中,John Zukowski 展示了如何驾驭这匹新一代的“役马”. J2SE 1.5 以前的版本要求直接使用 XML 解析器来装载配置文件并存储设置

Java Object类学习笔记

看下Api文档的一些说明 public class Object Class Object is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class. Since: JDK1.0 从JDK1.0就已经存在的元老类,类结构的根,所有类的父类,所有类都实现了这个类的方法,包含

java.util.Properties工具类

import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Properties;

JDK源码学习(9)- java.util.Properties实例与源码

java.util.Properties说明. 该类主要是读取属性配置文件,两种文件类型:普通文件格式为key = value:xml文件. 1)key = value示例如下: public class TestProperties { public static void main(String[] args) { Properties properties = new Properties(); FileInputStream fileInputStream; try { fileInpu

Java快速教程--vamei 学习笔记(进阶篇)

感谢vamei,学习链接:http://www.cnblogs.com/vamei/archive/2013/03/31/2991531.html Java进阶01 String类 学习链接:http://www.cnblogs.com/vamei/archive/2013/04/08/3000914.html 字符串操作 ---------------------------------------------------------------------------------------

java 集合基础1 学习笔记

集合特点: 1.用于存储对象的容器. 2.集合的长度是可变的. 3.集合中不可以存储基本数据类型值. Collection接口常见方法: 1.添加 boolean add(obj); boolean addAll(Collection coll); 2.删除 boolean remove(obj); boolean removeAll(Collection coll); void clear();//清空集合 3.判断 boolean contains(obj); boolean contain

Apache commons lang工具类学习笔记(2)--StringUtils

StringUtils工具类具有对String具有简单而强大的处理能力,从检查空串到分割字符串,到生成格式化的字符串,使用都很方便简洁,能减少很多代码量; 详细的使用方法可以参考下面的例子或者官方的API(http://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/StringUtils.html#isAlpha(java.lang.CharSequence)) packa