前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Java 类之 java.util.Properties

Java 类之 java.util.Properties

作者头像
訾博ZiBo
发布2025-01-06 20:23:59
发布2025-01-06 20:23:59
7800
代码可运行
举报
运行总次数:0
代码可运行

Java 类之 java.util.Properties

关联博客:《基于 Java 列举和说明常用的外部化配置的实现方式》https://blog.csdn.net/qq_29689343/article/details/134408616

一、简介

java.util.Properties 是 Java 中用于处理属性文件的一个类。

属性文件通常用于存储配置信息,例如应用程序的设置和参数。Properties 类提供了一种方便的方式来管理键值对,其中键和值都是字符串类型

它本质上是一个 Hashtable ,因为 Hashtable 已经过时了,所以了解即可!

问题:Hashtable 是不是有点过时了? ChatGPT 回答:是的,Hashtable 类在Java中被认为有点过时。虽然它是一个实现了基本的哈希表功能的类,但在 Java Collections Framework 中引入了更先进、更强大的替代类,如 HashMapHashMapHashtable 的轻量级替代品,它具有相似的功能,但是在性能上更优越。HashMap 允许空键和空值,而 Hashtable 不允许。此外,Hashtable 的方法都是同步的,这意味着在多线程环境下,对 Hashtable 的操作是线程安全的。然而,这也带来了一些性能开销。 如果你在单线程环境下工作,并且不需要线程安全性,那么使用 HashMap 更为推荐。如果需要线程安全性,则可以考虑使用 ConcurrentHashMap 或者通过 Collections.synchronizedMap 方法包装 HashMap。 总体来说,在现代 Java 开发中,更常见的做法是使用 HashMap 或其他相关的集合类,而不是直接使用 Hashtable

代码语言:javascript
代码运行次数:0
复制
public class Properties extends Hashtable<Object,Object>

二、主要功能

1、存储键值对

Properties 对象可以存储键值对,其中键和值都是字符串。这些键值对通常以文本文件的形式存储,可以由人类读取和编辑

2、读取文件与属性

代码示例
代码语言:javascript
代码运行次数:0
复制
package com.zibo;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Main {

    public static void main(String[] args) {
        // 例子:读取属性文件
        Properties properties = new Properties();
        // config.properties 文件放在根目录下!可能存在中文乱码的问题,这里着重演示读取的过程,不做处理
        try (InputStream input = new FileInputStream("config.properties")) {
            properties.load(input);
            System.out.println(properties.getProperty("name"));
            System.out.println(properties.getProperty("age"));
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
运行结果
代码语言:javascript
代码运行次数:0
复制
zibo
27
截图
image-20231118010813173
image-20231118010813173

3、设置属性并保存文件

会创建新文件!如果文件名相同会覆盖!

代码示例
代码语言:javascript
代码运行次数:0
复制
package com.zibo;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;

public class Main {

    public static void main(String[] args) {
        Properties properties = new Properties();
        try (
            OutputStream out = new FileOutputStream("config.properties")
        ) {
            // 修改属性
            properties.setProperty("name", "ZIBO");
            properties.setProperty("age", "18");
            // 保存属性到 config.properties 文件
            properties.store(out, "Set 'name' and 'age' value");
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
结果截图
image-20231118011750834
image-20231118011750834

4、遍历属性

代码示例
代码语言:javascript
代码运行次数:0
复制
package com.zibo;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Main {

    public static void main(String[] args) {
        // 例子:读取属性文件
        Properties properties = new Properties();
        // config.properties 文件放在根目录下!可能存在中文乱码的问题,这里着重演示读取的过程,不做处理
        try (InputStream input = new FileInputStream("config.properties")) {
            properties.load(input);
            // 遍历所有属性
            properties.forEach((key, value) -> System.out.println(key + " = " + value));
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
运行结果
代码语言:javascript
代码运行次数:0
复制
name = ZIBO
age = 18
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java 类之 java.util.Properties
  • 一、简介
  • 二、主要功能
    • 1、存储键值对
    • 2、读取文件与属性
      • 代码示例
      • 运行结果
      • 截图
    • 3、设置属性并保存文件
      • 代码示例
      • 结果截图
    • 4、遍历属性
      • 代码示例
      • 运行结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档