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

格式良好的properties文件

name=小奎

age=19

测试类:

package stu; 

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

/**
* Properties类测试
* Date: 2012-6-10 18-56
*/
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:\\ttt.properties");
//创建一个Properties容器
Properties prop = new Properties();
//从流中加载properties文件信息
prop.load(is);
//循环输出配置信息

System.out.println("我是初始化加载的ttt.properties文件");
for (Object key : prop.keySet()) {
System.out.println(key + "=" + prop.get(key));
}

//定义一个输出流
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配置文件");

is.close(); //关闭流
os1.close();
os2.close();

//从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));
}

//修改Properties对象,并持久化到一个文件
prop.put("呵呵呵", "嘎嘎嘎");
OutputStream os3 = new FileOutputStream("D:\\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));
}
}
}

运行结果:

java.util.Properties类 学习笔记2_加载

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

java.util.Properties类 学习笔记2_class_02

java.util.Properties类 学习笔记2_xml_03

java.util.Properties类 学习笔记2_加载_04

java.util.Properties类 学习笔记2_properties_05

呵呵,全部达到预期目标。