Java中Properties的使用详解

在Java编程中,配置文件扮演着至关重要的角色。它们允许开发者在不修改代码的情况下调整程序的行为。Properties类是Java提供的一个便捷工具,用于读取和写入配置文件,特别是.properties文件。本文将详细介绍如何在Java中使用Properties类。

一、Properties类概述

Properties类继承自Hashtable类,因此它基于哈希表实现。Properties中的键和值都是字符串类型,这使其成为处理字符串键值对的理想选择。Properties类通常用于读取和写入配置文件,例如.properties文件。

二、创建和读取Properties文件
  1. 创建Properties文件

    首先,我们需要创建一个.properties文件。这里,我们将其命名为config.properties,内容如下:

    数据库配置

    db.url=jdbc:mysql://localhost:3306/mydb
    db.username=root
    db.password=pass123

  2. 读取Properties文件

    在Java中,我们可以使用Properties类来读取.properties文件。以下是一个示例代码,展示了如何读取config.properties文件并输出其中的配置信息:

    复制代码
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.util.Properties;
    
    public class ConfigReader {
        public static void main(String[] args) {
            Properties properties = new Properties();
            try {
                // 创建文件输入流,指定要读取的properties文件路径
                FileInputStream inputStream = new FileInputStream("config.properties");
                properties.load(inputStream); // 从文件输入流加载properties
                inputStream.close(); // 关闭输入流
    
                // 输出读取的配置信息
                System.out.println("数据库URL: " + properties.getProperty("db.url"));
                System.out.println("数据库用户名: " + properties.getProperty("db.username"));
                System.out.println("数据库密码: " + properties.getProperty("db.password"));
            } catch (IOException e) {
                e.printStackTrace(); // 处理IO异常
            }
        }
    }
三、使用Properties文件中的配置信息

读取完配置信息后,我们可以使用这些信息来连接到数据库。以下是一个示例代码,展示了如何使用config.properties文件中的配置信息来创建数据库连接:

复制代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class DatabaseConnection {
    public static void main(String[] args) {
        Properties properties = new Properties();
        try {
            FileInputStream inputStream = new FileInputStream("config.properties");
            properties.load(inputStream);
            inputStream.close();

            // 从properties中读取数据库信息
            String url = properties.getProperty("db.url");
            String username = properties.getProperty("db.username");
            String password = properties.getProperty("db.password");

            // 创建数据库连接
            Connection connection = DriverManager.getConnection(url, username, password);
            System.out.println("连接成功!"); // 输出连接成功信息

            // 关闭连接
            connection.close();
        } catch (IOException | SQLException e) {
            e.printStackTrace(); // 处理异常
        }
    }
}
复制代码
四、修改和保存Properties文件

除了读取Properties文件外,我们还可以使用setProperty方法添加或修改属性,并使用store方法将属性保存回文件。以下是一个示例代码,展示了如何修改和保存config.properties文件:

复制代码
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

public class PropertiesExample {
    public static void main(String[] args) {
        Properties properties = new Properties();
        try {
            // 加载属性文件
            FileInputStream fis = new FileInputStream("config.properties");
            properties.load(fis);
            fis.close();

            // 输出原属性
            System.out.println("原属性:");
            printProperties(properties);

            // 添加和修改属性
            properties.setProperty("database", "mysql");
            properties.setProperty("port", "3306");

            // 输出修改后的属性
            System.out.println("\n修改后的属性:");
            printProperties(properties);

            // 保存属性文件
            FileOutputStream fos = new FileOutputStream("config.properties");
            properties.store(fos, "Updated properties");
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 打印属性
    public static void printProperties(Properties properties) {
        for (var entry : properties.entrySet()) {
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
        }
    }
}

五、总结

Properties类是Java中一个非常实用的工具,用于读取和写入配置文件。通过创建.properties文件,并在Java程序中使用Properties类来读取和修改这些文件,我们可以方便地管理程序的配置信息。这不仅提高了代码的灵活性和可读性,还使得程序更易于维护和扩展。

希望这篇文章能够帮助你理解Properties文件的使用,并在你的Java项目中更好地管理配置信息。

相关推荐
蛋蛋的就会顺顺的20 分钟前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
余槐i28 分钟前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
需要8261 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
小 黄 鸡1 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
死磕音视频2 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
凤山老林2 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
伯恩bourne3 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
张彦峰ZYF3 小时前
停顿短不等于延迟低:G1、ZGC 与低延迟服务的目标分野、代价账本与选型标定
后端·回收暂停、应用停止总时长·到达安全点、分配停滞·屏障吃吞吐、并发线程吃核心·并发窗口吃堆余量·分区式靠挑回收集兑现目标·染色指针式不支持压缩引用
silvamux_3 小时前
curl 测试 OpenAI 兼容 API 的完整流程
java·人工智能·缓存·ai·oneapi
pride.li4 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉