Java 中的 Properties 类
Properties 类表示一个持久的属性集合。Properties 可以保存到流中或从流中加载。它属于 java.util 包。 Properties 定义了以下实例变量。这个变量保存与 Properties 对象相关联的默认属性列表。
Properties defaults: 这个变量保存一个与 Properties 对象相关联的默认属性列表。
Properties 类的特点:
- Properties 是 Hashtable 的一个子类。
- 它用于维护一个值列表,其中键是字符串,值也是字符串,即可以用于从属性文件中存储和检索字符串类型的数据。
- Properties 类可以指定其他属性列表作为其默认值。如果原始 Properties 列表中没有特定的键属性,则会搜索默认属性。
- Properties 对象不需要外部同步,多个线程可以共享一个 Properties 对象。
- 也可以用它来检索系统的属性。
Properties 文件的优点
如果从属性记录中更改了任何数据,则不必重新编译 java 类。它用于存储需要经常更改的数据。
注意: Properties 类没有从其超类 Hashtable 继承载入因子的概念。
声明
Properties 的构造方法
1. Properties(): 这将创建一个没有默认值的 Properties 对象。
Properties p = new Properties();
2. Properties(Properties propDefault): 第二种创建一个对象,它使用 propDefault 作为默认值。
Properties p = new Properties(Properties propDefault);
示例1: 下面的程序展示了如何使用 Properties 类从属性文件获取信息。
让我们创建一个属性文件并将其命名为 db.properties 。
db.properties
代码
示例2: 下面的程序展示了如何使用 Properties 类来获取所有系统属性。使用 System.getProperties() 方法,可以获取系统的所有属性。
Code
输出
示例3: 以下程序展示了如何使用Properties类创建属性文件。
输出
Properties的方法
方法 | 描述 |
---|---|
getProperty(String key) | 在属性列表中查找指定键对应的属性。 |
getProperty(String key, String defaultValue) | 在属性列表中查找指定键对应的属性。 |
list(PrintStream out) | 将此属性列表打印到指定的输出流。 |
list(PrintWriter out) | 将此属性列表打印到指定的输出流。 |
load(InputStream inStream) | 从输入字节流读取属性列表(键-元素对)。 |
load(Reader reader) | 以简单的逐行格式从输入字符流读取属性列表(键-元素对)。 |
loadFromXML(InputStream in) | 将指定输入流中表示的XML文档中的所有属性加载到此属性表中。 |
propertyNames() | 返回此属性列表中所有键的枚举,包括默认属性列表中的不同键,如果尚未从主属性列表中找到同名的键。 |
save(OutputStream out, String comments) | 已弃用。如果在保存属性列表时发生I / O错误,则此方法不会抛出IOException。 |
setProperty(String key, String value) | 调用Hashtable方法put。 |
store(OutputStream out, String comments) | 将此属性列表(键-元素对)写入输出流中,以适合使用load(InputStream)方法加载到Properties表中的格式。 |
store(Writer writer, String comments) | 将此属性列表(键-元素对)写入输出字符流中,以适合使用load(Reader)方法的格式。 |
storeToXML(OutputStream os, String comment) | 发出表示此表中包含的所有属性的XML文档。 |
storeToXML(OutputStream os, String comment, String encoding) | 发出表示此表中包含的所有属性的XML文档,使用指定的编码。 |
storeToXML(OutputStream os, String comment, Charset charset) | 发出表示此表中包含的所有属性的XML文档,使用指定的编码。 |
stringPropertyNames() | 返回此属性列表中的键和对应值均为字符串的键的不可修改集合,包括默认属性列表中的不同键,如果尚未从主属性列表中找到同名键。 |
在java.util.Hashtable类中声明的方法
方法 | 描述 |
---|---|
clear() | 清除哈希表中的所有键。 |
clone() | 创建此哈希表的浅层副本。 |
compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) | 尝试计算指定键及其当前映射的值 (或 null,如果没有当前映射) 的映射。 |
computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction) | 如果指定键尚未与值相关联 (或映射为 null),则尝试使用给定映射函数计算其值,并将其输入到此映射中,除非为 null。 |
computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) | 如果指定键的值存在且非 null,则尝试基于键及其当前映射的值计算新的映射。 |
contains(Object value) | 测试此哈希表中是否有一些键映射到指定值。 |
containsKey(Object key) | 测试指定对象是否为此哈希表中的键。 |
containsValue(Object value) | 如果此哈希表映射一个或多个键到此值,则返回 true。 |
elements() | 返回此哈希表中值的枚举。 |
entrySet() | 返回包含在此映射中的映射关系集的 Set 视图。 |
equals(Object o) | 根据 Map 接口中的定义将指定的 Object 与此 Map 比较以实现相等性。 |
get(Object key) | 返回指定键映射到的值,如果此映射不包含该键的映射,则返回 null。 |
hashCode() | 根据 Map 接口中的定义返回此 Map 的哈希码值。 |
isEmpty() | 测试此哈希表是否将任何键映射到值。 |
keys() | 返回此哈希表中键的枚举。 |
keySet() | 返回此映射中包含的键的 Set 视图。 |
merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction) | 如果指定键尚未与值相关联或相关联为 null,则将其与给定的非 null 值相关联。 |
put(K key, V value) | 将指定键映射到此哈希表中的指定值。 |
putAll(Map<? extends K,? extends V> t) | 将指定地图中的所有映射复制到此哈希表中。 |
rehash() | 增加内部重新组织此哈希表的容量,以更有效地容纳和访问其条目。 |
remove(Object key) | 从此哈希表中删除键 (及其对应的值)。 |
size() | 返回此哈希表中的键数。 |
toString() | 以项集合的形式返回此Hashtable对象的字符串表示形式,括在大括号中,并用 ASCII 字符 “,”(逗号和空格)分隔。 |
values() | 返回此映射中包含的值的 Collection 视图。 |
返回此映射中包含的值的集合视图。 |
interface java.util.Map中声明的方法
方法 | 描述 |
---|---|
forEach(BiConsumer<? super K,? super V> action) | 对此映射中的每个条目执行给定的操作,直到处理完所有条目或操作抛出异常。 |
getOrDefault(Object key, V defaultValue) | 返回指定键映射到的值,如果此映射不包含键的映射,则返回defaultValue。 |
putIfAbsent(K key, V value) | 如果指定的键尚未与值相关联(或映射到null),则将其与给定值相关联并返回null,否则返回当前值。 |
remove(Object key, Object value) | 仅当指定的键当前映射到指定的值时,才删除该键的条目。 |
replace(K key, V value) | 仅当指定的键当前映射到某个值时,才替换该键的条目。 |
replace(K key, V oldValue, V newValue) | 仅当当前映射到指定值时,才替换指定键的条目。 |
replaceAll(BiFunction<? super K,? super V,? extends V> function) | 将每个条目的值替换为调用该条目上给定函数的结果,直到处理完所有条目或函数抛出异常为止。 |