Eine Benutzerkonfiguration wird zum Beginn einer Anwendung geladen. Während ihres Laufs werden die verschiedensten Paramter geändert und zum Ende gespeichert.
Für den Zugriff auf die Konfiguration werden Pfad, Name, Parameter-Schlüssel und die Konfiguration (params) selbst global festgelegt.
[code lang=“java“]public static final String CONFIG_PATH =
System.getProperty(„user.home“) +
System.getProperty(„file.separator“) +
„.app“;
public static final String CONFIG_FILE =
„convert.properties“;
public static final String PARAM_XYZ = „param.xyz“;
private Properties params = new Properties();[/code]
Beim Start der Anwendung wird geprüft, ob das Verzeichnis für die Konfiguration vorhanden ist. Wenn dies nicht der Fall ist, wird das Verzeichnis angelegt und eine möglicherweise vorhandene Konfiguration eingelesen.
[code lang=“java“]try {
File confDir = new File(CONFIG_PATH);
if(! confDir.exists()) confDir.mkdir();
String config = CONFIG_PATH +
System.getProperty(„file.separator“) +
CONFIG_FILE;
File c = new File(config);
if( c.exists() ){
FileInputStream in = new FileInputStream(config);
params.load(in);
in.close();
}
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}[/code]
Nach dem Laden hat man über den Parameter-Schlüssel Zugriff auf die Werte der Konfiguration. Ist ein Schlüssel nicht definiert, wird null geliefert.
[code lang=“java“]params.getProperty(PARAM_XYZ)[/code]
Geändert wird ein Parameter ebenfalls über seinen Schlüssel.
[code lang=“java“]params.setProperty(PARAM_XYZ, „abcd“);[/code]
Am Ende müssen alle aktuellen Werte gespeichert werden.
[code lang=“java“]try {
String config = CONFIG_PATH +
System.getProperty(„file.separator“) +
CONFIG_FILE;;
FileOutputStream out = new FileOutputStream(config);
properties.store(out, „Lokale Konfiguration“);
out.close();
} catch (Exception e) {
e.printStackTrace();
}[/code]
Beim Speichern ist zu beachten, das alle gewollten Möglichkeiten – das Programm zu Beenden – beachtet werden. So kommen in einem typischen GUI die Titelleiste, ein Menüeintrag und ein Toolbar-Button in Frage.