当我们开发一个软件项目时,经常需要读取项目的一些配置数据。比如项目中用到的数据库链接地址、Tomcat服务端口号、数据文件备份地址等信息都需要放到一个配置文件中,程序可以读取并获取。这样做的好处是,当需要更改数据库连接地址、Tomcat服务端口号、数据文件备份地址等信息时,不需要修改代码,只需要修改配置文件内容即可。
Map接口还有一个重要的实现类,Properties类,主要用于读取Java配置文件。配置文件中的许多变量经常变化,以满足不同项目部署环境的要求。

1.属性类的构造函数
属性提供了两个常用的构造函数,描述如下:
●属性
使用此构造函数创建空的无默认值的属性列表。
●属性
使用此构造函数创建具有指定默认值的空的属性列表。
2.属性类的属性访问
与其他Map接口实现类一样,Properties类也提供了用于访问元素的get和put方法。但是,不建议使用这两种方法,因为它们允许调用方插入键或值不是字符串的数据。相反,应该使用setProperty和getProperty方法。
●对象设置属性
该方法用于将属性项添加到属性列表中,如果key指定的属性项已经存在,则修改该属性项。
●字符串getProperty
此方法用于获取指定键的属性值。

访问类属性的示例代码如下:
程序实例化对象属性并调用setProperty方法来添加四个属性项:ip、port、name和psw。然后,调用getProperty方法来获取属性值。程序的输出结果如下图所示:
Properties类主要用于读取和修改配置文件。您需要在配置文件中写入或读取属性。Properties类还提供了配置文件的访问方法。
1.读取属性类的配置文件。
●无效加载抛出IOException
这个方法用于从输入字符流中读取属性列表。因为此方法会引发IO异常,所以在调用此方法时,应该使用try-catch语句来捕获IO异常。
●无效保存引发IOException
此方法将当前属性列表写入输出字符流,因为此方法会引发IO异常,所以在调用此方法时,应该使用try-catch语句来捕获IO异常。
属性配置文件存储示例代码如下:
程序的代码与上例基本相同,只是增加了将属性列表保存到database.xml的语句。下图显示了写入的database.xml文件的内容:
database.xml配置文件内容从上图可以看出,示例代码创建的所有属性项都已经写入了配置文件。唯一的问题是第一行显示乱码。乱码内容是调用store方法存储配置文件时传入的注释内容“数据库配置属性”。建议在编写配置文件时不要使用中文内容。

读取属性配置文件的示例代码如下:
程序调用load方法读取上面例子中创建的配置文件,然后调用propertyNames方法获取属性项的枚举集,最后遍历枚举集输出属性项。程序的输出结果如下图所示:
ReadPropertiesDemo输出结果从上图可以看出,程序正确输出了读取的配置文件的属性项。
■知识推动
Properties类表示一组持久的属性,可以从流中保存或加载。属性列表中的每个键及其对应的值都是一个字符串。Properties类通常用于访问项目配置文件。


