0

デフォルトで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. 未入力のキーのデフォルトを使用し、必要に応じて新しい値を使用して、2 つの構成ファイルを結合します。

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

Java .properties API と Java Preferences API を調べましたが、構成はアプリケーション固有ではなくユーザー固有であるため、Preferences API は役に立たないようです。

4

1 に答える 1

1

どうですか:

ファイル 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 のすべてのメソッドを使用できます。

于 2013-10-30T05:11:26.870 に答える