Java入坑之 Properties配置文件

一、相关概念

1.1基础概念

Properties文件是java中很常用的一种配置文件,文件后缀为“.properties”,属文本文件,文件的内容格式是“键=值”的格式,可以用“#”作为注释,java编程中用到的地方很多,运用配置文件,可以便于java深层次的解耦。例如java应用通过JDBC连接数据库时,通常需要在代码中写数据库连接字符串,下面贴出java通过JDBC连接数据库的代码(以mysql为例):

String driver="com.mysql.jdbc.Driver";//mysql提供的Driver接口的实现类
String jdbcUrl="jdbc:mysql:///user";//此处为"jdbc:mysql://localhost:3306/user"的简化形式,user为数据库名
String user="root";
String password="451535";
Class.forName(driver);//通过反射动态实例化mysql数据库驱动类
Connection conn= DriverManager.getConnection(jdbcUrl,user,password);
1234567

 以上代码连接mysql数据库没有任何问题,但是我想换成Oracle数据库,问题就来了,不是不能改,而是我必须得到java源代码中修改代码,这样的硬代码耦合在java中一般不这么做(菜鸟程序员有可能)。所以,为了达到解耦的目的,我们可以用配置文件来储存数据库的连接字符串。下面贴一份保存数据库连接字符串的properties配置文件 jdbc.properties:

driver=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/user
user=root
password=451535

 这样我们就可以通过加载properties配置文件来连接数据库,达到深层次的解耦目的,如果想要换成oracle或是DB2,我们只需要修改配置文件即可,不用修改任何代码就可以更换数据库。

 1.2应用场景

.properties文件常用来记录引用地址的常用信息,例如:包含应用软件的配置信息,简单的数据信息,数据库驱动地址信息,与其他程序交互时所需要的链接地址等等

1.3快速入门

  1. 注释: .properties 文件支持以 # 或 ! 开头的注释行。注释行中的文本会被忽略。
  2. 空格和换行: .properties 文件中的属性键和属性值之间可以用 = 或 : 分隔。属性键和属性值之间的空格会被忽略,但属性值中的空格会保留。
  3. 转义字符: 特殊字符(如等号、冒号、空格等)在属性值中可以使用转义字符来表示。例如:\=, \:, \ , 等。
  4. UTF-8 编码: .properties 文件通常使用 UTF-8 编码来支持特殊字符和多语言。
  5. 资源束(ResourceBundle): Java提供了 ResourceBundle 类来加载 .properties 文件,以便在多语言应用程序中提供本地化支持。
  6. 默认属性: 你可以在 .properties 文件中设置默认属性值。当查找某个属性值时,如果未找到对应的键,将返回默认值。
  7. 相对路径和绝对路径: 在指定文件名时,可以使用相对路径或绝对路径。相对路径从项目根目录开始,但最好提供绝对路径以确保正确性。
  8. 使用 Java 代码生成 .properties 文件: 你也可以使用 Java 代码来生成 .properties 文件,从而实现动态配置。
  9. 异常处理: 在读取或写入 .properties 文件时,需要处理可能发生的 IOException 异常,以确保代码的稳定性。
  10. .xml 格式: 虽然 .properties 文件是常见的配置文件格式,但你也可以使用 .xml 格式来存储配置信息,Java 也提供了相应的类来处理。

二、代码详解

2.1读取.properties文件

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

public class PropertiesReader {
    public static void main(String[] args) {
        // 创建一个 Properties 对象来存储属性键值对
        Properties properties = new Properties();
        
        try {
            // 打开文件输入流,加载属性文件内容
            FileInputStream fileInputStream = new FileInputStream("example.properties");
            properties.load(fileInputStream); // 将属性文件内容加载到 Properties 对象中
            fileInputStream.close(); // 关闭文件输入流,释放资源
            
            // 从 Properties 对象中获取指定键的属性值
            String value = properties.getProperty("key");
            
            // 打印属性值
            System.out.println("Value: " + value);

        } catch (IOException e) {
            // 如果发生异常,打印异常信息
            e.printStackTrace();
        }
    }
}

2.2修改.properties文件

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

public class PropertiesModifier {
    public static void main(String[] args) {
        try {
            // 加载属性文件
            FileInputStream fileInputStream = new FileInputStream("example.properties");
            Properties properties = new Properties();
            properties.load(fileInputStream); // 将属性文件内容加载到 Properties 对象中
            fileInputStream.close(); // 关闭文件输入流,释放资源
            
            // 修改属性值
            properties.setProperty("key", "new_value"); // 使用 setProperty 方法更新属性的值
            
            // 保存更改回属性文件
            FileOutputStream fileOutputStream = new FileOutputStream("example.properties");
            properties.store(fileOutputStream, "Updated by PropertiesModifier"); // 保存更改到属性文件
            fileOutputStream.close(); // 关闭文件输出流,释放资源

            System.out.println("Property value updated successfully.");

        } catch (IOException e) {
            // 如果发生异常,打印异常信息
            e.printStackTrace();
        }
    }
}

2.3具体场景

2.3.1数据库

下面是一个示例应用场景:存储数据库连接信息的配置文件。

假设你正在开发一个Java应用程序,该程序需要连接到数据库来执行一些操作。而数据库的连接信息(如数据库URL、用户名、密码等)不宜硬编码在代码中,因为这些信息可能在不同的环境中发生变化(例如,开发、测试、生产环境),而且如果需要修改连接信息,就需要修改源代码,这并不方便。

这时,可以使用一个.properties文件来存储数据库连接信息,然后在应用程序中读取这些信息

# Database Configuration
db.url=jdbc:mysql://localhost:3306/mydb
db.username=myuser
db.password=mypassword

 Java程序来读取这个.properties文件中的数据库连接信息:

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

public class DatabaseConfigReader {
    public static void main(String[] args) {
        // 创建一个 Properties 对象来存储配置信息
        Properties properties = new Properties();
        
        try {
            // 加载数据库配置文件
            FileInputStream fileInputStream = new FileInputStream("database.properties");
            properties.load(fileInputStream); // 将配置文件内容加载到 Properties 对象中
            fileInputStream.close(); // 关闭文件输入流,释放资源
            
            // 从 Properties 对象中获取数据库连接信息
            String dbUrl = properties.getProperty("db.url");
            String dbUsername = properties.getProperty("db.username");
            String dbPassword = properties.getProperty("db.password");
            
            // 使用获取到的数据库连接信息进行连接
            System.out.println("Connecting to database...");
            System.out.println("URL: " + dbUrl);
            System.out.println("Username: " + dbUsername);
            // 注意:密码通常不应该直接打印,这里仅为演示目的
            System.out.println("Password: " + dbPassword);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 properties文件来存储数据库连接信息,并在Java程序中读取这些信息。这种方法使得在不同环境中轻松更改连接信息,而无需修改源代码。当你需要连接到不同的数据库或更改数据库访问凭据时,只需更新.properties文件而不必重新编译你的Java应用程序。

2.3.2多语言

国际化(i18n)支持。当你的应用需要支持多种语言和地区时,可以使用.properties文件来存储不同语言的文本翻译。 

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: properties配置文件是一种常见的配置文件格式,通常用于存储应用程序的配置信息,如数据库连接信息、日志配置、邮件服务器设置等。它采用键值对的方式存储数据,每个键值对之间使用等号(=)分隔,每行表示一个键值对,例如: ``` # database configuration db.host=localhost db.port=3306 db.username=root db.password=123456 ``` 在这个例子中,“#”表示注释,第一行是注释内容,不会被解析。后面四行是四个键值对,分别表示数据库主机名、端口号、用户名和密码。这些配置信息可以在应用程序中通过读取配置文件来获取,从而方便地进行配置和管理。 ### 回答2: properties配置文件是一种常用的配置文件格式,用于存储应用程序的配置信息。 它通常采用键值对的形式,每行记录一个配置项,以等号(=)分隔键和值。 properties配置文件的优点之一是它的简洁性和易读性。由于采用了直观的键值对形式,开发人员可以轻松地查看和编辑配置文件。 另一个优点是可扩展性。我们可以根据需要定义各种配置项,并根据需要添加新的配置项。这使得properties配置文件适用于各种应用程序,从小型项目到大型企业级应用程序。 此外,properties配置文件还具有跨平台和易于处理的特点。不管是在Windows、Linux还是Mac系统上,都可以轻松读取和修改properties文件。而且,许多编程语言都提供了内置的函数或库来处理properties文件,使得对其进行读取、写入和修改变得非常容易。 虽然properties配置文件有许多优点,但也有一些限制。首先,它不支持复杂的数据结构,只能存储简单的键值对。其次,由于它的文件格式相对简单,对于存储大量数据或复杂数据的应用程序可能不够灵活。在这种情况下,可能需要考虑使用其他配置文件格式,如XML或JSON。 总体而言,properties配置文件是一种简单、易读、易扩展的配置文件格式,适用于大多数应用程序的配置需求。它的使用简便性和跨平台特性使其成为开发人员们喜爱的配置文件格式之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烟雨平生9527

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值