Properties – zapisywanie i odczytywanie (3)
Obiekt Properties
to hashmapa przechowująca pary wartości: „nazwa właściwości – wartość” podane jako łańcuchy znaków. Properties
zapisuje się do plików .properties. Tutaj pokazuję jak zapisać Properties
do pliku XML.
Zapisywanie
Klasa R021.java
package aderby.start; import aderby.DerbyUtil; import java.io.*; import java.nio.charset.StandardCharsets; import java.util.*; public class R021 { public static void main(String[] args) { Properties props = new Properties(); props.put("user", "Jacek"); props.put("password", "abcdefgh"); props.put("create", "true"); props.put("nazwa", "ąęśćżźółń"); FileOutputStream fos = null; try { fos = new FileOutputStream( "aderby/src/resources/props/r021.xml"); props.storeToXML(fos, "Właściwości startowe", StandardCharsets.UTF_8); } catch (IOException e) { e.printStackTrace(); } DerbyUtil.close(fos); } }
Po uruchomieniu klasy otrzymujemy plik r021.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>Właściwości startowe</comment> <entry key="password">abcdefgh</entry> <entry key="create">true</entry> <entry key="user">Jacek</entry> <entry key="nazwa">ąęśćżźółń</entry> </properties>
Odczytywanie
Klasa R021a.java
package aderby.start; import aderby.DerbyUtil; import java.io.*; import java.util.*; import java.util.Map.*; public class R021a { public static void main(String[] args) { FileInputStream fis = null; Properties props = new Properties(); try { fis = new FileInputStream( "aderby/src/resources/props/r021.xml"); props.loadFromXML(fis); } catch (IOException e) { e.printStackTrace(); } //albo Set<Entry<Object, Object>> pr = props.entrySet(); for (Entry<Object, Object> entry : pr) { String nazwa = (String) entry.getKey(); String value = (String) entry.getValue(); System.out.println(nazwa + "=" + value); } //albo //props.forEach((key, value) -> System.out.println(key + ": " + value)); DerbyUtil.close(fis); } }
Po uruchomieniu klasy na konsoli zobaczymy:
password=abcdefgh create=true user=Jacek nazwa=ąęśćżźółń
Pliki do ściągnięcia
Aktualny (tworzony narastająco) plik module-info.java
Aktualny (tworzony narastająco) plik DerbyUtil.java
Pliki tworzone narastająco zastępują poprzednie pliki o tej samej nazwie i działają dla wszystkich wcześniej opublikowanych przykładów we wszystkich wpisach w projekcie. W przypadku pliku module-info.java
może być potrzebne skreślenie niepotrzebnych wpisów.