【Java I/O 流】4 - 11 Properties 类
§4-11 Properties 类
4-11.1 Hashtable 线程安全的哈希表
Hashtable 是一个位于 java.util 包下的类,继承自抽象类 Dictionary(现已过时,推荐使用 Map 接口的实现类)。
Hashtable 是一个线程安全的哈希映射表,是 Java 集合框架的一个成员。一般情况下,若无特殊要求,建议使用 HashMap,若同时需要满足线程安全和高并发要求,则考虑使用 ConcurrentHashMap。
Hashtable 实现了 Map 接口,意味着它实现了所有与 Map 有关的方法.。除了线程安全外,Hashtable 的默认初始长度为 11,而不是 16,但加载因子相同。
该类具有两个子类,Properties 和 UIDefaults,意味着它们也属于哈希表。
本节内容重点介绍 Properties 类。
4-11.2 Properties 属性类
Properties 表示一组属性,Properties 类用一个键值对表示一个属性。Properties 中的内容可以通过 I/O 流存储或读取,每一个属性的键和对应的值都是一个字符串。
虽然 Properties 属于哈希表,但不像 Hashtable 和 HashMap,它不是泛型类。但可以接收任意类型数据(Object),通常,都会向 Properties 中存入字符串。
Properties 用字符串表示属性键值对以及其能关联 I/O 流的能力,使得它能够用于保存和读取属性文件,扩展名为 properties。
Properties 类还可用作输出和读取 XML 文件,通过相关 API 实现。
构造方法:
| 构造方法 | 描述 |
|---|---|
Properties() |
创建一个空属性表,无任何默认值 |
I/O 流相关方法:
| 方法 | 描述 |
|---|---|
void store(OuputStream out, String comments) |
将 Properties 中的属性键值对写出到指定输出流中 |
void store(Writer writer, String comments) |
将 Properties 中的属性键值对写出到指定写入器中 |
void storeToXML(OutputStream os, String comment)void storeToXML(OutputStream os, String comment, String encoding)void storeToXML(OutputStream os, String comment, Charset charset) |
生成一份表示表中所有属性的 XML 文档 |
void load(InputStream inStream) |
从字节流中读取属性表 |
void load(Reader reader) |
从字符输入流中读取属性表 |
void loadFromXML(InputStream in) |
通过输入流,读取 XML 文件中所表示的所有属性 |
void list(PrintStream out)void list(PrintWriter out) |
将属性表打印到指定输出流中 |
添加和获取属性键值对的方法:不建议使用 put 和 putAll 方法添加属性值,这种方法允许调用者插入非字符串条目。相反,应当使用 setProperty 方法添加数据。
| 方法 | 描述 |
|---|---|
Object serProperty(String key, String value) |
底层调用 put 方法,添加数据 |
String getProperty(String key) |
在表中搜索指定键,返回对应值 |
用处:Properties 的特点使得它能够用于存储和恢复程序配置。其他常用的配置文件有 ini, xml, yaml 等。
浙公网安备 33010602011771号