Java中Properties的使用详解

devtools/2024/11/13 20:04:27/

在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
  1. 读取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); // 从文件输入流加载propertiesinputStream.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项目中更好地管理配置信息。


http://www.ppmy.cn/devtools/133326.html

相关文章

在线绘制带community的蛋白质-蛋白质相互作用(PPI)网络图

导读:分子相互作用网络图揭示了细胞内部分子间的复杂相互作用。通过识别网络中密集连接的节点所形成的社区(community),可以揭示它们之间以前未知的功能联系。这些社区可能代表了具有共同功能的功能模块,对于理解细胞生…

青少年编程与数学 02-003 Go语言网络编程 20课题、Go语言常用框架

青少年编程与数学 02-003 Go语言网络编程 20课题、Go语言常用框架 课题摘要:一、常用框架Web框架微服务框架数据库ORM框架测试框架工具和库 二、GinGin的主要特点包括:Gin的基本使用:Gin的中间件:Gin的路由分组: 三、BeegoBeego的…

分布式——BASE理论

简单来说: BASE(Basically Available、Soft state、Eventual consistency)是基于CAP理论逐步演化而来的,核心思想是即便不能达到强一致性(Strong consistency),也可以根据应用特点采用适当的方…

Axure设计之三级联动选择器教程(中继器)

使用Axure设计三级联动选择器(如省市区选择器)时,可以利用中继器的数据存储和动态交互功能来实现。下面介绍中继器三级联动选择器设计的教程: 一、效果展示: 1、在三级联动选择器中,首先选择省份&#xff…

京东商品SKU信息的“窃听风云”:Python爬虫的幽默之旅

在这个信息爆炸的时代,我们就像是一群在数据海洋中寻找宝藏的海盗。今天,我们将化身为技术高超的“数据海盗”,用Python这把锋利的剑,去京东的宝库中精准地获取商品的SKU信息。准备好了吗?让我们开始这场幽默的冒险之旅…

SQLI LABS | Less-38 GET-Stacked Query Injection-String

关注这个靶场的其它相关笔记:SQLI LABS —— 靶场笔记合集-CSDN博客 0x01:过关流程 输入下面的链接进入靶场(如果你的地址和我不一样,按照你本地的环境来): http://localhost/sqli-labs/Less-38/ 从本关开…

单链表算法题(数据结构)

1. 反转链表 https://leetcode.cn/problems/reverse-linked-list/description/ 题目: 看到这个题目的时候我们怎么去想呢?如果我们反应快的话,应该可以想到我们可以从1遍历到5然后依次头插,但是其实我们还有更好的办法&#xff…

pytorch量化训练

训练时量化(Quantization-aware Training, QAT)是一种在模型训练过程中,通过模拟低精度量化效应来增强模型对量化操作的鲁棒性的技术。与后训练量化不同,QAT 允许模型在训练过程中考虑到量化引入的误差,从而在实际部署…