首页 理论教育 Java程序设计:Properties类的特性

Java程序设计:Properties类的特性

时间:2023-11-01 理论教育 版权反馈
【摘要】:Properties类主要用来存储字符串类型的键和值,利用Properties集合可以存取应用程序配置文件的配置项。Properties类有一个成员属性protected Properties defaults,该属性用于包含配置文件属性列表中所有未找到值的键的默认值。图9-29修改Properties文件的默认编码界面将默认编码“ISO-8859-1”手动修改为“UTF-8”。步骤3:在cn.linaw.chapter9.demo03包下新建PropertiesTest测试类。程序第24行调用Properties Test类的store方法将Properties集合的键值对信息写入配置文件保存。图9-31测试程序执行后test.properties文件内容项目总结集合就是容器,用来保存一组数据。

Java程序设计:Properties类的特性

Map接口有一个实现类java.util.Hashtable<K,V>,目前基本已经被Hash Map所取代,但是Hashtable有一个子类java.util.Properties在实际应用中很重要。Properties类主要用来存储字符串类型的键和值,利用Properties集合可以存取应用程序配置文件的配置项。配置文件内容格式为“键=值”,每个键及其对应的值都是字符串,可以用“#”来提供注释信息。

Properties类有一个成员属性protected Properties defaults,该属性用于包含配置文件属性列表中所有未找到值的键的默认值。

Properties类的构造方法如下:

(1)public Properties():创建一个无默认值的空属性列表。

(2)public Properties(Properties defaults):创建一个带有指定默认值的空属性列表。

下面列举几个Properties类的常用方法:

(1)public String getProperty(String key):用指定的键在此属性列表中搜索属性,也就是通过参数key,得到key所对应的value。如果在此属性列表中未找到该键,则接着递归检查默认属性列表及其默认值。如果未找到属性,则此方法返回null。

(2)public Object set Property(String key,String value):调用Hashtable的方法put设置键值对,即为属性列表中的键key设置对应的值。

(3)public Set<String>stringProperty Names():返回此属性列表中的键集,其中该键及其对应值都是字符串,包括默认属性列表中的键。

(4)public void load(InputStream inStream)throws IOException:从输入流中读取属性列表(键值对)。

(5)public void load(Reader reader)throws IOException:按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。

(6)public void store(OutputStream out,String comments)throws IOException:将此Properties表中的属性列表(键值对)写入输出流。

(7)public void store(Writer writer,String comments)throws IOException:以适合使用load(Reader)方法的格式,将此Properties表中的属性列表(键和元素对)写入输出字符流。参数writer为输出字符流writer,comments为属性列表的描述。

【例9-6】

利用Properties集合存取项目配置(属性)文件。

步骤1:在当前项目chapter9目录下新建一个test.properties配置文件(编码为UTF-8)。内容如图9-28所示。

图9-28 test.properties文件内容

步骤2:修改Eclipse中Properties文件的默认编码。

菜单栏【Window】菜单中选择【Preferences】,在弹出的对话框中选中【General】下【Content Types】,在右边框中选中【Java Properties File】,在“File associations:”区域选中“*.properties(locked)”,在下方“Default encoding:”文本框中显示默认编码为“ISO-8859-1”,如图9-29所示。

图9-29 修改Properties文件的默认编码界面

将默认编码“ISO-8859-1”手动修改为“UTF-8”。点击【Update】按钮,然后点击【OK】按钮完成设置。

步骤3:在cn.linaw.chapter9.demo03包下新建PropertiesTest测试类。PropertiesTest类源代码如图9-30所示。

图9-30 PropertiesTest测试类

(1)程序第12行构造了一个内容为空的Properties集合对象。

(2)程序第16、17行创建了一个BufferedReader对象,在转换输入流中指定字符编码为UTF-8。

(3)程序第18行使用Properties Test对象load方法通过输入流加载配置文件。

(4)程序第19行调用Properties Test对象getProperty方法读取Properties集合中键对应的值。(www.xing528.com)

(5)程序第20行调用Properties Test对象setProperty方法更新Properties集合中的键值对。

(6)程序第21行调用Properties Test对象setProperty方法向Properties集合中新增键值对。

(7)程序第22、23行创建了一个Buffered Writer对象,在转换输出流中指定字符编码为UTF-8。

(8)程序第24行调用Properties Test类的store方法将Properties集合的键值对信息写入配置文件保存。

本例用到了输入输出流存取配置文件,IO流具体参考下一项目。

步骤4:程序执行后,再次用记事本打开test.properties文件,如图9-31所示。

图9-31 测试程序执行后test.properties文件内容

项目总结

集合就是容器,用来保存一组数据。本项目分别介绍了单列集合和双列集合,单列集合的根接口是Collection,提供了操作单列集合的共有方法,Collection有两个子接口List和Set,相对Collection父接口,List接口新增了面向有序、可重复集合的方法,有两个常用的实现——子类Array List和Linked List,Array List的底层是由可变长数组实现的,而Linked List的底层是一个链表结构。Set接口相对父接口Collection没有新增方法,它的特点是元素无序、不重复,Set接口常用的实现类为HashSet,HashSet的底层是Hash Map,要理解HashSet,需要先理解Hash Map。双列集合的根接口是Map,提供了操作键值对的共有方法,Map接口中最重要的实现就是子类Hash Map,Hash Map的底层是哈希表,其实现方式是本项目难点。

HashSet集合的对象存储原理如图9-32所示。

图9-32 HashSet集合的对象存储原理

Hash Map集合的对象存储原理如图9-33所示。

图9-33 HashMap集合的对象存储原理

本项目最后讲解了Properties类,该类用于存取应用程序的配置项,在开发中非常重要。集合这一项目非常重要,对常用集合的创建和遍历都要认真掌握。

项目作业

1.简述List、Set和Map的区别,并列举常用的实现类。

2.简述Iterator迭代器的作用。

3.简述什么是哈希表,该种结构有何好处。

4.简述数组结构和链表结构的应用场景。

5.简述数组、List、Set、Map的常用遍历方式。

6.新建一个HashSet<Student>集合,往里面添加若干个Student对象,要求如下:

(1)如果姓名相同则表示重复,禁止添加。(提示:需要重写hashCode()方法和equals()方法。)

(2)新建测试类,对该HashSet集合的遍历,分别采用Iterator迭代器和增强for循环两种方式。

7.新建一个HashMap<String,Student>集合。键为字符串类型,值为Student。参考例9-4,采用四种方式遍历该Map集合。

8.上机实践书中出现的案例,可自由发挥修改。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈