[Java] Konfigurations-Einstellungen mit Hilfe von Properties laden/speichern

Häufig ist es notwendig, dass Programmeinstellungen in eine Konfigurationsdatei gespeichert und wieder geladen werden können. Mit Hilfe des Properties Objektes können solche Dateien im Format:

#Kommentarzeile
#Mon Jan 12 12:00:00 MYT 2013
database=localhost
user=Horst
password=geheim

oder

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Kommentarzeile</comment>
<entry key="database">localhost</entry>
<entry key="user">Horst</entry>
<entry key="password">geheim</entry>
</properties>

erzeugt werden.

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

/**
 * Speichert Konfiguration
 * @param filename Dateiname der Konfigurationsdatei
 */
public void SaveConfig(String filename)
{
    Properties prop = new Properties();
    FileOutputStream fos = null;

    try
    {
        // Properties setzen
        prop.setProperty("database", "localhost");
        prop.setProperty("user", "Horst");
        prop.setProperty("password", "geheim");

        // 1. Einstellungen speichern als einfache Datei
        fos = new FileOutputStream(filename);
        prop.store(fos, "Kommentarzeile");

        // 2. Einstellungen speichern als XML-Datei im Format UTF-8
        prop.storeToXML(new FileOutputStream(filename), "Kommentarzeile", "UTF-8");
    }
    catch (IOException ex)
    {
        ex.printStackTrace();
    }
    finally
    {
        if (fos != null) fos.close();
    }
}

/**
 * Läd Konfiguration
 * @param filename Dateiname der Konfigurationsdatei
 */
public void LoadConfig(String filename)
{
    Properties prop = new Properties();
    FileInputStream fis = null;

    try
    {
        // 1. Einstellungen aus einfacher Datei laden
        fis = new FileInputStream(filename);
        prop.load(fis);
        
        // 2. oder Einstellungen aus XML-Datei laden
        //prop.loadFromXML(fis);

        System.out.println(prop.getProperty("database"));
        System.out.println(prop.getProperty("user"));
    	System.out.println(prop.getProperty("password"));
    }
    catch (IOException ex)
    {
        ex.printStackTrace();
    }
    finally
    {
        if (fis != null) fis.close();
    }
}

Weiterführende Links