因为后续学习遇到的类中经常引用到这个类,所以先简单学习一下java.util.Properties类
1、首先明确Properties类的处理对象
Properties类的处理对象是——properties文件。
扩展名为.properties的文件经常作为配置文件出现在我们的应用中,如Hibernate、log4j、Plugin-project等就曾经或正在使用.properties作为核心 配置文件。掌握此类文件的读写对我们理解配置文件是有好处的。
- properties文件是一个文本文件
- properties文件的语法有两种,一种是注释,一种属性配置。 属性配置:以“键=值”的方式书写一个属性的配置信息。注 释:前面加上#号
- properties文件的一个属性配置信息值可以换行,但键不可以换行。值换行用“\”表示。
- properties的属性配置键值前后的空格在解析时候会被忽略。
- properties文件可以只有键而没有值。也可以仅有键和等号而没有值,但无论如何一个属性配置不能没有键。
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
bin/
output.. = bin/
bin.includes = META-INF/,\
.,\
bin/
2、properties类
(1)简介
引用部分摘自jdk 1.5 API帮助文档。
Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。
一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。
因为 Properties 继承于 Hashtable,所以可对 Properties 对象应用 put 和 putAll 方法。 但强烈反对使用这两个方法,因为它们允许调用方插入其键或值不是 Strings 的项。相反,应该使用 setProperty 方法。如果在“有危险”的 Properties 对象(即包含非 String 的键或值)上调用 store 或 save 方法,则该调用将失败。
load 和 store 方法按简单的面向行的格式加载和存储属性。此格式使用 ISO 8859-1 字符编码。可以使用 Unicode 转义符来编写此编码中无法直接表示的字符;转义序列中只允许单个 'u' 字符。可使用 native2ascii 工具对属性文件和其他字符编码进行相互转换。
loadFromXML(InputStream) 和 storeToXML(OutputStream, String, String) 方法按简单的 XML 格式加载和存储属性。默认使用 UTF-8 字符编码,但如果需要,可以指定某种特定的编码。XML 属性文档具有以下 DOCTYPE 声明:
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
注意,导入或导出属性时不访问系统 URI (http://java.sun.com/dtd/properties.dtd);该系统 URI 仅作为一个惟一标识 DTD 的字符串。
(2)主要方法
引用
Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。
一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。
因为 Properties 继承于 Hashtable,所以可对 Properties 对象应用 put 和 putAll 方法。 但强烈反对使用这两个方法,因为它们允许调用方插入其键或值不是 Strings 的项。相反,应该使用 setProperty 方法。如果在“有危险”的 Properties 对象(即包含非 String 的键或值)上调用 store 或 save 方法,则该调用将失败。
load 和 store 方法按简单的面向行的格式加载和存储属性。此格式使用 ISO 8859-1 字符编码。可以使用 Unicode 转义符来编写此编码中无法直接表示的字符;转义序列中只允许单个 'u' 字符。可使用 native2ascii 工具对属性文件和其他字符编码进行相互转换。
loadFromXML(InputStream) 和 storeToXML(OutputStream, String, String) 方法按简单的 XML 格式加载和存储属性。默认使用 UTF-8 字符编码,但如果需要,可以指定某种特定的编码。XML 属性文档具有以下 DOCTYPE 声明:
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
注意,导入或导出属性时不访问系统 URI (http://java.sun.com/dtd/properties.dtd);该系统 URI 仅作为一个惟一标识 DTD 的字符串。
以下方法说明来自jdk 1.5 API帮助文档,详细解释查看JDK API帮助文档。
- public String getProperty(String key):用指定的键在此属性列表中搜索属性。
- public String getProperty(String key, String defaultValue):用指定的键在属性列表中搜索属性。如果在属性列表中未找到该键,则接着递归检查默认属性列表及其默认值。如果未找到属性,则此方法返回默认值变量。
- public void setProperty(String key, String value):调用 Hashtable 的方法 put。
- public void load(InputStream inStream) throws IOException:从输入流中读取属性列表(键和元素对)。
- public void loadFromXML(InputStream in)throws IOException, InvalidPropertiesFormatException :将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。
- public void store(OutputStream out,String comments)throws IOException:将此 Properties 表中的属性列表(键和元素对)写入输出流。此方法适合使用 load 方法加载到 Properties 表中的格式。
- public void loadFromXML(InputStream in)throws IOException, InvalidPropertiesFormatException:将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。
- public void storeToXML(OutputStream os,String comment)throws IOException:发出一个表示此表中包含的所有属性的 XML 文档。