【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,但加载因子相同。

该类具有两个子类,PropertiesUIDefaults,意味着它们也属于哈希表。

本节内容重点介绍 Properties 类。

4-11.2 Properties 属性类

Properties 表示一组属性,Properties 类用一个键值对表示一个属性。Properties 中的内容可以通过 I/O 流存储或读取,每一个属性的键和对应的值都是一个字符串。

虽然 Properties 属于哈希表,但不像 HashtableHashMap,它不是泛型类。但可以接收任意类型数据(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)
将属性表打印到指定输出流中

添加和获取属性键值对的方法:不建议使用 putputAll 方法添加属性值,这种方法允许调用者插入非字符串条目。相反,应当使用 setProperty 方法添加数据。

方法 描述
Object serProperty(String key, String value) 底层调用 put 方法,添加数据
String getProperty(String key) 在表中搜索指定键,返回对应值

用处Properties 的特点使得它能够用于存储和恢复程序配置。其他常用的配置文件有 ini, xml, yaml 等。

posted @ 2023-08-24 21:42  Zebt  阅读(18)  评论(0)    收藏  举报