商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Properties 持久的属性集的实例详解

Properties 持久的属性集的实例详解

  发布于2026-07-22 阅读(0)

扫一扫,手机访问

说起 Ja va 里的 Properties,很多人第一反应是“哦,就是那个读配置文件的工具类”。确实,它最常见的用法就是加载 .properties 文件,但如果你只把它当个简单的键值对容器,那就有点小看它了。

它最值得关注的地方,其实藏在它的“血统”里——Properties 是 Hashtable 的子类。这意味着什么?Map 家族的十八般武艺它全都会,比如 put、get、containsKey 这些方法,一个不落都能用。但和普通 Map 不同,它有两个鲜明的个性:

第一,没有泛型。 键和值都是 String 类型,所有的操作天然固定在字符串范畴。这其实很符合配置文件的场景——配置项不就是一堆字符串对嘛。

第二,也是最关键的一点:它是一个“可以持久化”的属性集。 普通的 Map 数据存进去,程序一关就没了。但 Properties 不一样,它能把键值对存到硬盘、U盘、光盘这类持久化设备上,也能从这些设备上把数据读回来。这就让它在配置文件、系统参数等场景中成了标配。

怎么用?核心就两个动作:加载和存储。下面这段代码演示了如何根据 key 从 .properties 文件中读取对应的 value:

// 根据key读取value
public void readValue(String filePath, String key) {
    Properties props = new Properties();
    InputStream in = new BufferedInputStream(new FileInputStream(filePath));
    //Thread.currentThread().getContextClassLoader().getResourceAsStream("eop.properties");
    props.load(in); // 从输入流中读取属性列表(键和元素对)
    String value = props.getProperty(key);
}

// 读取properties的全部信息
public static void readProperties(String filePath) {
    Properties props = new Properties();
    InputStream in = new BufferedInputStream(new FileInputStream(filePath));
    props.load(in);
    Enumeration en = props.propertyNames();
    while (en.hasMoreElements()) {
        String key = (String) en.nextElement();
        String value = props.getProperty(key);
    }
}

注意看,load() 方法接受一个输入流,它会把流里的键值对解析出来填充到集合中。如果你要遍历所有属性,可以用 propertyNames() 拿到枚举,然后逐个读取。另外,getProperty() 方法还有一个重载版本,可以指定默认值,当 key 不存在时直接返回默认值,避免空指针的尴尬。

其实日常开发中,Properties 还有两个很实用的细节:一个是用 store() 方法把集合内容写回文件,另一个是它支持 XML 格式的持久化(通过 loadFromXML()storeToXML())。这些留给各位在实际项目中慢慢体会吧。

本文转载于:https://www.jb51.net/article/125834.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注