java - java 中的应用程序配置(默认)

标签 java properties

我正在尝试创建一个具有默认值的 java 属性文件,但我看到的所有示例都是用于读取已存在的 java 属性文件或写入不关心以前的内容,并且似乎并不涵盖使用默认值。

基本上我想做的是,

  1. 加载与应用程序捆绑在一起的默认配置文件(在 jar 文件内)

    #File default.properties:
    user=default
    pwd=default
    
  2. 从应用程序根文件夹加载自定义配置文件(如果存在)。

    #File user.properties:
    user=user
    name=name
    
  3. 如果自定义配置文件不存在,请根据与应用程序捆绑的默认配置编写带注释的“不执行任何操作”配置

    #File user.properties:
    #user=default
    #pwd=default
    
  4. 合并两个配置文件,使用未填充键的默认值并在适当的情况下使用新值。

    #File app.properties:
    user=user
    pwd=default
    name=name
    

我查看了 java .properties API 以及 java Preferences API,但首选项 API 似乎没什么用,因为配置是特定于用户的,而不是特定于应用程序的。

最佳答案

怎么样:

文件default.properties:

user=default
pwd=default

文件 user.properties:

pwd=user
name=user

将打印:{user=default, name=user, pwd=user}

class Main {
  public static void main(final String [] args) throws IOException {
    //load default properties
    final Properties defaultProp = new Properties();
    defaultProp.load(Main.class.getResourceAsStream("default.properties"));

    //load user properties
    final Properties userProp = new Properties();
    userProp.load(new FileInputStream(new File("./user.properties")));

    final Properties appProp = new Properties();

    //mix properties
    appProp.putAll(defaultProp);
    appProp.putAll(userProp);

    System.out.println(appProp);
  }  
}

java.util.Properties 扩展了实现 java.util.Map 的 java.util.Hashtable,因此您可以使用 Map 中的所有方法。

关于java - java 中的应用程序配置(默认),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19674086/

相关文章:

java - 计算器,无法按我想要的方式打印出来

java - 为什么有时我们将行为与 Java 中的类分开

java.lang.NullPointerException xml解析

c# - 有没有办法向自动属性添加函数调用?

java - 将文件添加到 spring 属性

java - 线程无法被调用

java - PostgreSQL :Calling of stored procedure through Java code with Hibernate

JavaFX:CSS 文件中的未知属性

c# - 属性比字段慢

c# - 为什么无法覆盖 getter-only 属性并添加 setter?