java读取配置文件最常用推荐方式是properties类配合getresourceasstream()加载classpath下的.properties文件;json/yaml需jackson或snakeyaml等第三方库;注意中文编码、空值处理及敏感信息保护。

Java 中读取配置文件内容,最常用且推荐的方式是使用 Properties 类配合类路径资源加载(如 getResourceAsStream()),适用于 .properties 格式;若为 JSON、YAML 等格式,则需借助第三方库(如 Jackson、SnakeYAML)。
用 Properties 读取 classpath 下的 .properties 文件
Properties 是 Java 标准库中专为键值对配置设计的工具,适合读取 application.properties 或 config.properties 这类纯文本配置。
- 确保配置文件放在
src/main/resources/目录下(Maven/Gradle 项目),编译后会自动进入 classpath - 用
getClass().getResourceAsStream("/config.properties")获取输入流(注意路径前加/表示从 classpath 根开始) - 调用
properties.load(inputStream)加载,之后用getProperty("key")获取值
示例:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
Properties props = new Properties();
try (InputStream is = MyClass.class.getResourceAsStream("/app.properties")) {
if (is == null) throw new RuntimeException("配置文件未找到");
props.load(is);
String dbUrl = props.getProperty("database.url");
int timeout = Integer.parseInt(props.getProperty("http.timeout", "5000"));
}
读取不在 classpath 的外部配置文件
当配置文件位于项目外部(如 /etc/myapp/config.properties 或用户目录),需用 FileInputStream。
- 直接构造
FileInputStream,传入绝对路径或相对路径(注意工作目录影响) - 建议先检查文件是否存在且可读:
Files.isReadable(Paths.get(path)) - 仍用
Properties.load()加载,逻辑与 classpath 方式一致
读取 JSON 或 YAML 配置(需依赖库)
Java 原生不支持 JSON/YAML,需引入对应解析器:
- JSON:用 Jackson,搭配
ObjectMapper将文件反序列化为 Java 对象或Map - YAML:用 SnakeYAML,类似地用
Yaml.load()解析为Map或自定义类 - Maven 示例依赖:
com.fasterxml.jackson.core:jackson-databind或org.yaml:snakeyaml
注意事项和最佳实践
避免常见坑:
- 中文乱码:.properties 文件默认 ISO-8859-1 编码,含中文时需用
native2ascii转义,或改用load(Reader)并指定 UTF-8(Java 9+ 支持load(InputStream, Charset)) - 空值处理:
getProperty(key)返回null时应提供默认值,如props.getProperty("key", "default") - 敏感信息:不要把密码等硬编码在配置文件中,生产环境建议结合环境变量或密钥管理服务
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










