Properties (Java API)
Properties ist eine vererbte Klasse von HashMap. Bei Properties muss jedoch der Key(Schlüssel) und Value(Wert) von Typ String sein.
Wichtige Methoden der Klasse Properties: <code=java> setProperties(Schlüssel, Wert); </code=java> Erwartet als Parameter 2 Strings. Damit wird ein Wert mit dem dazugehörigen Schlüssel in die Properties eingetragen.
<code=java> getProperties(Schlüssel); </code=java> Liefert den Wert der zu diesem Schlüssel gehört, zurück.
<code=java> list(PrintStream); </code=java> Gibt alle Werte und dazugehören Schlüssel, die in der Properties-Klasse gespeichert sind, zurück.
<code=java> store(OutPutStream, String); </code=java> Speichert alle Werte und dazugehören Schlüssel in eine ASCII-Datei.
<code=java> load(InputStream); </code=java> Lädt alle Werte und dazugehörigen Schlüssel aus einer ASCII-Datei.
<code=java> storeToXML(OutPutStream, String); </code=java> Speichert alle Werte und dazugehören Schlüssel in eine XML-Datei.
<code=java>
loadFromXML(InputStream);
</code=java>
Lädt alle Werte und dazugehörigen Schlüssel aus einer XML-Datei.
Properties setzen und anzeigen
<code=java> public static void setzeProperties(){ Properties pr = new Properties(); pr.setProperty("John Dean","New York"); pr.setProperty("Mark Took","Los Angeles"); pr.setProperty("Chan Lee","Peking"); System.out.println("Chan Lee lebt in "+pr.getProperty("Chan Lee")); System.out.println("Mark Took lebt in "+pr.getProperty("Mark Took")); System.out.println("John Dean lebt in "+pr.getProperty("John Dean")); } </code=java> <code=text> Chan Lee lebt in Peking Mark Took lebt in Los Angeles John Dean lebt in New York </code=text>
Properties verketten
<code=java> public static void verketteProperties(){ Properties defaultP = new Properties(), userP = new Properties(defaultP); defaultP.setProperty("Chan Lee","Peking"); defaultP.list( System.out ); userP.setProperty("Mark Took","Los Angeles"); userP.setProperty("John Dean","New York"); userP.list( System.out ); System.out.println("Chan Lee lebt in "+userP.getProperty("Chan Lee"));
} </code=java> <code=text> -- listing properties -- Chan Lee=Peking -- listing properties -- Mark Took=Los Angeles John Dean=New York Chan Lee=Peking Chan Lee lebt in Peking </code=text>
Properties in eine ASCII-Datei speichern und laden
<code=java> public static void speichereProperties(){ String datei = "properties.txt"; try{ FileOutputStream fos = new FileOutputStream(datei); Properties pr1 = new Properties(System.getProperties()); pr1.setProperty("John Dean","New York"); pr1.setProperty("Mark Took","Los Angeles"); pr1.setProperty("Chan Lee","Peking"); pr1.store(fos, "Name-List"); FileInputStream fis = new FileInputStream(datei); Properties pr2 = new Properties(); pr2.load(fis); pr2.list(System.out);
}catch(FileNotFoundException e1 ){ e1.printStackTrace(); }catch (IOException e2){ e2.printStackTrace(); } } </code=java> <code=text> Konsole:´
-- listing properties -- Mark Took=Los Angeles John Dean=New York Chan Lee=Peking
properties.txt:
- Name-List
- Mon Feb 26 21:33:17 CET 2007
Mark\ Took=Los Angeles John\ Dean=New York Chan\ Lee=Peking </code=text>
Properties in eine XML-Datei speichern und laden
<code=java> public static void ladeXMLProperties(){ String datei = "properties.xml"; try{ FileInputStream fis = new FileInputStream(datei); FileOutputStream fos = new FileOutputStream(datei); Properties pr = new Properties(); pr.setProperty("John Dean","New York"); pr.setProperty("Mark Took","Los Angeles"); pr.setProperty("Chan Lee","Peking"); pr.storeToXML(fos, "PropertiesXML"); pr.loadFromXML(fis); pr.list(System.out);
}catch(FileNotFoundException e1 ){ e1.printStackTrace(); }catch (IOException e2){ e2.printStackTrace(); } } </code=java> <code=text> Konsole:
-- listing properties -- Mark Took=Los Angeles John Dean=New York Chan Lee=Peking
properties.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>PropertiesXML</comment> <entry key="Mark Took">Los Angeles</entry> <entry key="John Dean">New York</entry> <entry key="Chan Lee">Peking</entry> </properties>
</code=text>