发布于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())。这些留给各位在实际项目中慢慢体会吧。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8