java.util.Properties类 学习笔记

时间:2023-03-08 18:10:36
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-------------------");
} }

输出

aaarticlea/png;base64,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" alt="" />

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

aaarticlea/png;base64,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" alt="" />