在Java项目开发过程中,经常需要把数据库连接信息、接口地址、业务开关等可变参数放到配置文件中,避免将这些内容直接写在代码里,后续修改配置不需要重新编译代码。Properties类是Java标准库中专门用于处理键值对形式配置的工具,能很方便地读取properties格式的配置文件,下面介绍具体的使用方法。

Properties类的基本介绍
Properties类继承自Hashtable<Object,Object>,是线程安全的,专门用来存储字符串类型的键值对配置。它的核心能力就是加载properties格式的配置文件,然后提供方法获取配置项的值。properties文件的内容格式很简单,每一行是一个配置项,用等号分隔键和值,也可以用冒号或者空格分隔,最常见的还是等号形式。
读取配置文件的基本步骤
使用Properties类读取配置文件主要分为三步:创建Properties实例、加载配置文件内容、获取需要的配置项。下面是具体的操作说明和代码示例。
步骤1:准备properties配置文件
首先在项目的资源目录下创建一个配置文件,比如命名为config.properties,内容如下:
# 数据库配置 db.url=jdbc:mysql://127.0.0.1:3306/test_db db.username=root db.password=123456 # 业务开关 feature.enable=true
步骤2:加载配置文件内容
加载配置文件有两种常见方式,一种是通过文件输入流加载本地文件,另一种是通过类加载器加载类路径下的资源文件,后者在Java Web项目和普通Java项目中都更常用。
如果是读取类路径下的配置文件,代码示例如下:
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class PropertiesReadDemo {
public static void main(String[] args) {
// 创建Properties实例
Properties properties = new Properties();
// 通过类加载器获取配置文件的输入流
InputStream inputStream = PropertiesReadDemo.class.getClassLoader()
.getResourceAsStream("config.properties");
try {
if (inputStream != null) {
// 加载配置文件内容
properties.load(inputStream);
System.out.println("配置文件加载成功");
} else {
System.out.println("未找到配置文件");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭输入流
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
步骤3:获取配置项的值
配置文件加载完成后,可以通过getProperty(String key)方法获取指定键对应的值,如果键不存在会返回null。还可以使用getProperty(String key, String defaultValue)方法,当键不存在时返回默认的值。
接着上面的代码,添加获取配置项的逻辑:
// 获取数据库url配置
String dbUrl = properties.getProperty("db.url");
System.out.println("数据库地址:" + dbUrl);
// 获取不存在的配置,使用默认值
String timeout = properties.getProperty("db.timeout", "30");
System.out.println("连接超时时间:" + timeout + "秒");
// 获取业务开关配置
String enableFeature = properties.getProperty("feature.enable");
System.out.println("功能开关状态:" + enableFeature);
处理中文乱码问题
properties文件默认使用的是ISO-8859-1编码,如果配置文件中有中文内容,直接加载会出现乱码。解决办法是使用InputStreamReader指定编码格式来读取输入流,比如使用UTF-8编码。
修改后的加载代码如下:
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.Properties;
public class PropertiesReadDemo2 {
public static void main(String[] args) {
Properties properties = new Properties();
InputStream inputStream = PropertiesReadDemo2.class.getClassLoader()
.getResourceAsStream("config.properties");
try {
if (inputStream != null) {
// 使用UTF-8编码读取配置文件
InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
properties.load(reader);
// 获取中文配置项
String welcomeMsg = properties.getProperty("welcome.msg");
System.out.println("欢迎信息:" + welcomeMsg);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
对应的配置文件添加中文配置项:
welcome.msg=欢迎使用系统
常见注意事项
- 配置文件的键名不要重复,后面的配置会覆盖前面的相同键的配置。
- 使用类加载器加载资源时,配置文件的路径是相对于类路径的根目录,如果是放在包下,需要加上包路径,比如
com/demo/config.properties。 - 加载完配置文件后一定要关闭输入流,避免资源泄露。
- 如果配置项的值是布尔类型或者数字类型,需要自己手动转换类型,Properties类只返回字符串类型的值。
总结
利用Java的Properties类读取配置文件的操作并不复杂,只要掌握创建实例、加载文件、获取配置三个核心步骤,就能满足大部分基础配置读取需求。如果遇到中文乱码问题,只需要用指定编码的字符流来加载即可。实际开发中可以根据项目需求封装一个配置读取工具类,简化配置加载的操作。
JavaProperties类配置文件读取properties文件修改时间:2026-06-29 12:03:31