Java 中的 Properties 类

Java 中的 Properties 类

Properties 类表示一个持久的属性集合。Properties 可以保存到流中或从流中加载。它属于 java.util 包。 Properties 定义了以下实例变量。这个变量保存与 Properties 对象相关联的默认属性列表。

Properties defaults: 这个变量保存一个与 Properties 对象相关联的默认属性列表。

Properties 类的特点:

  • Properties 是 Hashtable 的一个子类。
  • 它用于维护一个值列表,其中键是字符串,值也是字符串,即可以用于从属性文件中存储和检索字符串类型的数据。
  • Properties 类可以指定其他属性列表作为其默认值。如果原始 Properties 列表中没有特定的键属性,则会搜索默认属性。
  • Properties 对象不需要外部同步,多个线程可以共享一个 Properties 对象。
  • 也可以用它来检索系统的属性。

Properties 文件的优点

如果从属性记录中更改了任何数据,则不必重新编译 java 类。它用于存储需要经常更改的数据。

注意: Properties 类没有从其超类 Hashtable 继承载入因子的概念。

声明

public class Properties extends Hashtable<Object,Object>
Java

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

username = coder
password = geeksforgeeks
Java

代码

// Java program to demonstrate Properties class to get
// information from the properties file
  
import java.util.*;
import java.io.*;
public class GFG {
    public static void main(String[] args) throws Exception
    {
        // create a reader object on the properties file
        FileReader reader = new FileReader("db.properties");
  
        // create properties object
        Properties p = new Properties();
  
        // Add a wrapper around reader object
        p.load(reader);
  
        // access properties data
        System.out.println(p.getProperty("username"));
        System.out.println(p.getProperty("password"));
    }
}
Java

示例2: 下面的程序展示了如何使用 Properties 类来获取所有系统属性。使用 System.getProperties() 方法,可以获取系统的所有属性。

Code

// Java program to demonstrate Properties class to get
// all the system properties

import java.util.*;
import java.io.*;

public class GFG {
    public static void main(String[] args) throws Exception
    {
        // Get system properties
        Properties props = System.getProperties();

        // Enumerate the properties
        Enumeration keys = props.keys();
        while (keys.hasMoreElements())
        {
            // Get property name
            String key = (String)keys.nextElement();
            // Get property value
            String value = (String)props.get(key);
            System.out.println(key + " : " + value);
        }
    }
}
Java
// 演示Properties类获取所有系统属性的Java程序
  
import java.util.*;
import java.io.*;
  
public class GFG {
    public static void main(String[] args) throws Exception
    {
        // 获取所有系统属性
        Properties p = System.getProperties();
  
        // 存储属性信息的集合
        Set set = p.entrySet();
  
        // 遍历集合
        Iterator itr = set.iterator();
        while (itr.hasNext()) {
  
            // 打印每个属性
            Map.Entry entry = (Map.Entry)itr.next();
            System.out.println(entry.getKey() + " = "
                               + entry.getValue());
        }
    }
}
Java

输出

Java 中的 Properties 类

示例3: 以下程序展示了如何使用Properties类创建属性文件。

// 演示Properties类创建属性文件的Java程序
  
import java.util.*;
import java.io.*;
  
public class GFG {
    public static void main(String[] args) throws Exception
    {
        // 创建Properties实例
        Properties p = new Properties();
  
        // 添加属性
        p.setProperty("name", "Ganesh Chowdhary Sadanala");
        p.setProperty("email",
                      "ganeshs.gfg@gmail.com");
  
        // 将属性存储到文件中
        p.store(new FileWriter("info.properties"),
                "GeeksforGeeks Properties Example");
    }
}
Java

输出

Java 中的 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) 将每个条目的值替换为调用该条目上给定函数的结果,直到处理完所有条目或函数抛出异常为止。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册