Properties集合
Map接口还有一个实现类Hashtable,它和HashMap十分相似,其中一个主要区别在于Hashtable是线程安全的。另外在使用方面,Hashtable的效率也不及HashMap,所以,目前基本上被HashMap类所取代,但Hashtable类有一个子类Properties在实际应用中非常重要。Properties主要用来存储字符串类型的键和值,在实际开发中,经常使用Properties集合类来存取应用的配置项。
假设有一个文本编辑工具,要求默认背景色是红色,字体大小为14px,语言为中文,这些要求就可以使用Properties集合类对应的properties文件进行配置,效果如文件1所示(假设配置文件的文件名为test.properties)。
文件1 test.properties
1 Backgroup-color = red
2 Font-size = 14px
3 language = chinese
接下来,就通过一个案例来学习Properties集合类如何对properties配置文件进行读取和写入操作(假设test.Properties配置文件在项目的根目录下),如文件2所示。
文件2 Example22.java
1 import java.io.FileInputStream;
2 import java.io.FileOutputStream;
3 import java.util.Properties;
4 public class Example22 {
5 public static void main(String[] args) throws Exception {
6 // 1、通过Properties进行属性文件读取操作
7 Properties pps = new Properties();
8 // 加载要读取的文件test.properties
9 pps.load(new FileInputStream("test.properties"));
10 // 遍历test.properties键值对元素信息
11 pps.forEach((k, v) -> System.out.println(k + "=" + v));
12 // 2、通过Properties进行属性文件写入操作
13 // 指定要写入操作的文件名称和位置
14 FileOutputStream out = new FileOutputStream("test.properties");
15 // 向Properties类文件进行写入键值对信息
16 pps.setProperty("charset", "UTF-8");
17 // 将此 Properties集合中新增键值对信息写入配置文件
18 pps.store(out, "新增charset编码");
19 }
20 }
运行结果如图1所示。
图1 运行结果
执行完文件1程序后,刷新并查看原有的test.properties配置文件中的内容,如图2所示。
图2 test.properties配置文件内容
在文件1中,首先创建了Properties集合对象,然后通过IO流的形式读取了test.properties配置文件中的内容,并进行遍历,完成了Properties集合读取properties配置文件的操作。接着,同样通过IO流的形式指定了要进行写入操作的文件地址和名称,使用Properties的setProperty()方法新增了一个键值对元素,并使用store()方法将新增信息写入到properties配置文件中。在该文件中涉及到的配置文件test.properties是通过IO流的形式进行操作的,关于IO流的有关内容将会在下一章进行详细讲解,此处不必深究。