Java 修改 Properties 文件
在 Java 中修改 .properties 文件可以通过以下几种方式实现,以下是几种常见的方法:

使用 Properties 类和 FileOutputStream
import java.io.*;
import java.util.Properties;
public class ModifyProperties {
public static void main(String[] args) {
// 1. 加载现有的 properties 文件
Properties prop = new Properties();
try (InputStream input = new FileInputStream("config.properties")) {
prop.load(input);
} catch (IOException ex) {
ex.printStackTrace();
}
// 2. 修改属性值
prop.setProperty("database.url", "jdbc:mysql://newhost:3306/mydb");
prop.setProperty("database.username", "newuser");
prop.setProperty("database.password", "newpass");
// 3. 保存修改后的 properties 文件
try (OutputStream output = new FileOutputStream("config.properties")) {
prop.store(output, "Updated database configuration");
System.out.println("Properties file updated successfully!");
} catch (IOException io) {
io.printStackTrace();
}
}
}
使用 ResourceBundle(只读,不直接支持修改)
ResourceBundle 本身是只读的,但可以结合 Properties 类实现修改:
import java.io.*;
import java.util.ResourceBundle;
import java.util.Properties;
public class ModifyWithResourceBundle {
public static void main(String[] args) {
// 1. 获取 ResourceBundle
ResourceBundle bundle = ResourceBundle.getBundle("config");
// 2. 转换为 Properties 对象
Properties prop = new Properties();
bundle.keySet().forEach(key -> prop.setProperty(key, bundle.getString(key)));
// 3. 修改属性
prop.setProperty("app.version", "2.0.0");
// 4. 保存回文件
try (OutputStream output = new FileOutputStream("config.properties")) {
prop.store(output, "Updated application version");
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 Apache Commons Configuration(推荐)
如果项目允许使用第三方库,Apache Commons Configuration 提供了更强大的功能:
import org.apache.commons.configuration2.Configuration;
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.ex.ConfigurationException;
public class ModifyWithCommonsConfig {
public static void main(String[] args) {
try {
// 1. 加载配置文件
Configurations configs = new Configurations();
Configuration config = configs.properties("config.properties");
// 2. 修改属性
config.setProperty("timeout", "30");
config.setProperty("retry.count", "5");
// 3. 保存修改
config.setProperty("config.file", "config.properties");
configs.properties("config.properties").save();
System.out.println("Properties file updated successfully!");
} catch (ConfigurationException e) {
e.printStackTrace();
}
}
}
注意事项
- 文件路径:确保文件路径正确,最好使用绝对路径或相对于类路径的路径
- 编码问题:处理中文等非ASCII字符时,指定编码:
try (OutputStream output = new FileOutputStream("config.properties")) { prop.store(output, "Comments", "UTF-8"); } - 并发访问:如果多个线程可能同时修改文件,需要考虑同步机制
- 备份:修改前建议备份原文件
- 权限:确保程序有读写文件的权限
最佳实践
- 对于简单的属性修改,使用标准的
Properties类即可 - 对于复杂的配置管理,考虑使用 Apache Commons Configuration 或其他配置管理框架
- 将配置文件放在类路径下,便于部署和访问
- 考虑使用配置中心(如 Spring Cloud Config)管理分布式环境中的配置
希望这些方法能帮助你实现 Java 中修改 properties 文件的需求!

