{"id":1483,"date":"2012-07-29T15:27:43","date_gmt":"2012-07-29T13:27:43","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=1483"},"modified":"2012-07-29T15:27:43","modified_gmt":"2012-07-29T13:27:43","slug":"inselupdate-property-dateien-mit-java-util-properties-lesen-und-schreiben","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2012\/07\/inselupdate-property-dateien-mit-java-util-properties-lesen-und-schreiben\/","title":{"rendered":"Inselupdate: Property-Dateien mit java.util.Properties lesen und schreiben"},"content":{"rendered":"<p>Dateien, die Schl\u00fcssel-Werte-Paare als String repr\u00e4sentieren und die Schl\u00fcssel und Wert durch ein Gleichheitszeichen trennen, nennen sich Property-Dateien. Sie kommen zur Programmkonfiguration h\u00e4ufig vor, und Java bietet mit der Klasse Properties die M\u00f6glichkeit, die Property-Dateien einzulesen und zu schreiben.<\/p>\n<p><strong>store() und load()-Methoden vom Properties Objekt<\/strong><\/p>\n<p>Die Methode store(\u2026) dient zum Speichern der Zust\u00e4nde und load(\u2026) zum Initialisieren eines Properties-Objekts aus einem Datenstrom. Die Schl\u00fcssel und Werte trennt ein Gleichheitszeichen. Die Lade-\/Speicher-Methoden sind:<\/p>\n<p>class java.util.Properties   <br \/>extends Hashtable&lt;Object,Object&gt;<\/p>\n<p>\u00a7 void store(OutputStream out, String comments)<\/p>\n<p>\u00a7 void store(Writer writer, String comments)   <br \/>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.<\/p>\n<p>\u00a7 void load(InputStream inStream)<\/p>\n<p>\u00a7 void load(Reader reader) throws IOException   <br \/>Liest eine Properties-Liste aus einem Eingabestrom.<\/p>\n<p>Ist der Typ ein Bin\u00e4rstrom also OutputStream\/InputStream, so behandeln die Methoden die Zeichen in der ISO 8859-1 Kodierung. Reader\/Writer erlauben eine freie Kodierung. Eine \u00e4hnliche Methode list(\u2026) ist nur f\u00fcr Testausgaben gedacht ist, sie sollte nicht mit store(\u2026) verwechselt werden.<\/p>\n<p>Das folgende Beispiel initialisiert ein Properties-Objekt mit den Systemeigenschaften und f\u00fcgt dann einen Wert hinzu. Anschlie\u00dfend macht store(\u2026) die Daten persistent, load(\u2026) liest sie wieder, und list(\u2026) gibt die Eigenschaften auf dem Bildschirm aus:<\/p>\n<p>Path path = Paths.get( &quot;properties.txt&quot; );<\/p>\n<p>try ( Writer writer = Files.newBufferedWriter( path, StandardCharsets.UTF_8 ) ) {<\/p>\n<p>Properties prop1 = new Properties( System.getProperties() );<\/p>\n<p>prop1.setProperty( &quot;MeinNameIst&quot;, &quot;Forrest Gump&quot; );<\/p>\n<p><b>prop1.store( writer, &quot;Eine Insel mit zwei Bergen&quot; );<\/b><\/p>\n<p>try ( Reader reader = Files.newBufferedReader( path, StandardCharsets.UTF_8 ) ) {<\/p>\n<p>Properties prop2 = new Properties();<\/p>\n<p><b>prop2.load( reader );<\/b><\/p>\n<p><b>prop2.list( System.out );<\/b><\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>catch ( IOException e ) {<\/p>\n<p>e.printStackTrace();<\/p>\n<p>}<\/p>\n<p><strong>Besonderheiten des Formats<\/strong><\/p>\n<p>Beginnt eine Zeile mit einem \u201e#\u201c oder \u201e!\u201c gilt sie als Kommentar und wird \u00fcberlesen. Da der Schl\u00fcssel selbst aus einem Gleichheitszeichen bestehen kann, steht in dem Fall ein \u201e\\\u201c voran, folglich liefert Properties p = new Properties(); p.setProperty(&quot;=&quot;, &quot;=&quot;); p.store(System.out, null); neben dem Kommentar die Zeile \u201e\\==\\=\u201c. Beim Einlesen ber\u00fccksichtigen die Lesemethoden auch Zeilenumbr\u00fcche: eine Zeile darf mit \\ enden und dann f\u00fchrt die folgende Zeile die vorangehende fort. Die Property \u201ecars\u201c ist also \u201cHonda, Mazda, BMW\u201d, wenn steht:<\/p>\n<p>cars = \\<\/p>\n<p>Honda, Mazda, \\<\/p>\n<p>BMW<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dateien, die Schl\u00fcssel-Werte-Paare als String repr\u00e4sentieren und die Schl\u00fcssel und Wert durch ein Gleichheitszeichen trennen, nennen sich Property-Dateien. Sie kommen zur Programmkonfiguration h\u00e4ufig vor, und Java bietet mit der Klasse Properties die M\u00f6glichkeit, die Property-Dateien einzulesen und zu schreiben. store() und load()-Methoden vom Properties Objekt Die Methode store(\u2026) dient zum Speichern der Zust\u00e4nde und load(\u2026) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[11],"tags":[],"class_list":["post-1483","post","type-post","status-publish","format-standard","hentry","category-insel"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1483","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=1483"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1483\/revisions"}],"predecessor-version":[{"id":1484,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1483\/revisions\/1484"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1483"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1483"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1483"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}