---
title: 'Inselupdate: Property-Dateien mit java.util.Properties lesen und schreiben'
url: 'https://www.tutego.de/blog/javainsel/2012/07/inselupdate-property-dateien-mit-java-util-properties-lesen-und-schreiben'
markdown: 'https://www.tutego.de/blog/javainsel/2012/07/inselupdate-property-dateien-mit-java-util-properties-lesen-und-schreiben.md'
date: '2012-07-29'
description: 'Dateien, die Schlüssel-Werte-Paare als String repräsentieren und die Schlüssel und Wert durch ein Gleichheitszeichen trennen, nennen sich Property-Dateien. Sie kommen zur Programmkonfiguration häufig vor, und Java bietet mit der Klasse Properties die Möglichkeit, die Property-Dateien einzulesen und…'
taxonomy:
  category:
    - Insel
---

# Inselupdate: Property-Dateien mit java.util.Properties lesen und schreiben

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://www.tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://www.tutego.de/blog/javainsel/)

## Inselupdate: Property-Dateien mit java.util.Properties lesen und schreiben

29.07.2012 · [Christian Ullenboom](https://www.tutego.de/blog/javainsel/author/admin/)

Dateien, die Schlüssel-Werte-Paare als `String` repräsentieren und die Schlüssel und Wert durch ein Gleichheitszeichen trennen, nennen sich Property-Dateien. Sie kommen zur Programmkonfiguration häufig vor, und Java bietet mit der Klasse Properties die Möglichkeit, die Property-Dateien einzulesen und zu schreiben.

**`store()` und `load()`-Methoden vom Properties Objekt**

Die Methode `store(…)` dient zum Speichern der Zustände und `load(…)` zum Initialisieren eines Properties-Objekts aus einem Datenstrom. Die Schlüssel und Werte trennt ein Gleichheitszeichen. Die Lade-/Speicher-Methoden sind:

class `java.util.Properties`

```
extends Hashtable<Object,Object>
```

- `void store(OutputStream out, String comments)`
- `void store(Writer writer, String comments)`Schreibt die Properties-Liste in des Ausgabestroms. Am Kopf der Datei wird eine Kennung geschrieben, die im zweiten Argument steht. Die Kennung darf `null` sein.
- `void load(InputStream inStream)`
- `void load(Reader reader) throws IOException`Liest eine Properties-Liste aus einem Eingabestrom.

Ist der Typ ein Binärstrom also OutputStream/InputStream, so behandeln die Methoden die Zeichen in der ISO 8859-1 Kodierung. Reader/Writer erlauben eine freie Kodierung. Eine ähnliche Methode `list(…)` ist nur für Testausgaben gedacht ist, sie sollte nicht mit `store(…)` verwechselt werden.

Das folgende Beispiel initialisiert ein Properties-Objekt mit den Systemeigenschaften und fügt dann einen Wert hinzu. Anschließend macht `store(…)` die Daten persistent, `load(…)` liest sie wieder, und `list(…)` gibt die Eigenschaften auf dem Bildschirm aus:

```java
Path path = Paths.get( "properties.txt" );

try ( Writer writer = Files.newBufferedWriter( path, StandardCharsets.UTF_8 ) ) {

Properties prop1 = new Properties( System.getProperties() );

prop1.setProperty( "MeinNameIst", "Forrest Gump" );

prop1.store( writer, "Eine Insel mit zwei Bergen" );

try ( Reader reader = Files.newBufferedReader( path, StandardCharsets.UTF_8 ) ) {

Properties prop2 = new Properties();

prop2.load( reader );

prop2.list( System.out );

}

}

catch ( IOException e ) {

e.printStackTrace();

}
```

**Besonderheiten des Formats**

Beginnt eine Zeile mit einem „#“ oder „!“ gilt sie als Kommentar und wird überlesen. Da der Schlüssel selbst aus einem Gleichheitszeichen bestehen kann, steht in dem Fall ein „\\“ voran, folglich liefert Properties p = new Properties(); p.`setProperty`("=", "="); `p.store(System.out, null)`; neben dem Kommentar die Zeile „\\==\\=“. Beim Einlesen berücksichtigen die Lesemethoden auch Zeilenumbrüche: eine Zeile darf mit \\ enden und dann führt die folgende Zeile die vorangehende fort. Die Property „cars“ ist also “Honda, Mazda, BMW”, wenn steht:

cars = \\

Honda, Mazda, \\

BMW

Kategorien: [Insel](https://www.tutego.de/blog/javainsel/category/insel/)

[← Alle Beiträge](https://www.tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Mit der internen Compiler-API auf den AST einer Klasse zugreifen](https://www.tutego.de/blog/javainsel/2012/07/mit-der-internen-compiler-api-auf-den-ast-einer-klasse-zugreifen.md)
- Next: [Welche Jars braucht man mindestens für ein JPA-Hibernate-Beispiel?](https://www.tutego.de/blog/javainsel/2012/07/welche-jars-braucht-man-mindestens-fr-ein-jpa-hibernate-beispiel.md)
