java读取properties文件最常用properties类,支持加载本地或classpath路径文件,并可结合系统属性动态覆盖,默认值优先级为jvm参数→配置文件→硬编码,默认utf-8编码写回需谨慎。

Java 中读取 properties 配置文件最常用的方式是使用 java.util.Properties 类,它天然支持键值对加载,且能直接与系统参数(如 JVM 启动参数、环境变量)配合使用。
加载本地 properties 文件
把配置写在外部文件(如 app.properties)中,再用 Properties 加载:
- 创建文件
app.properties,内容示例:
db.url=jdbc:mysql://localhost:3306/mydb
db.user=admin
log.level=INFO - 代码中读取:
Properties props = new Properties();
try (InputStream is = new FileInputStream("app.properties")) {
props.load(is);
String url = props.getProperty("db.url"); // 获取值
String user = props.getProperty("db.user");
}
读取 classpath 下的 properties 文件
更推荐把配置放在 src/main/resources 目录下(Maven/Gradle 项目),通过类路径加载:
- 文件路径:例如
config.properties放在 resources 根目录 - 加载方式(推荐,避免路径硬编码):
Properties props = new Properties();
try (InputStream is = YourClass.class.getClassLoader()
.getResourceAsStream("config.properties")) {
if (is != null) {
props.load(is);
}
}
注意:getResourceAsStream 返回 null 时说明文件未找到,需判空处理。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
结合系统属性动态覆盖配置
Properties 支持“默认值”机制,可优先使用 JVM 系统属性(-Dkey=value),缺失时回退到配置文件:
- 启动时加参数:
java -Ddb.url=jdbc:h2:mem:testdb MyApp - 代码中这样获取(带默认值):
String dbUrl = System.getProperty("db.url",
props.getProperty("db.url", "jdbc:h2:mem:default"));
逻辑是:先查 JVM 参数 → 没有则查 properties 文件 → 都没有就用硬编码默认值。
保存修改并写回文件(可选)
如果需要运行时更新配置并持久化:
- 修改后调用
props.setProperty("log.level", "DEBUG") - 写入文件(注意字符编码,建议显式指定 UTF-8):
try (FileOutputStream os = new FileOutputStream("app.properties")) {
props.store(os, "Updated by app at " + new Date());
}
注意:生产环境慎用自动写回,可能引发并发或权限问题。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










