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
1    package aderby.start;
2    
3    import aderby.DerbyUtil;
4    
5    import java.io.*;
6    import java.nio.charset.StandardCharsets;
7    import java.util.*;
8    
9    public class R021 {
10       public static void main(String[] args) {
11           Properties props = new Properties();
12           props.put("user", "Jacek");
13           props.put("password", "abcdefgh");
14           props.put("create", "true");
15           props.put("nazwa", "ąęśćżźółń");
16           FileOutputStream fos = null;
17           try {
18               fos = new FileOutputStream("aderby/src/resources/props/r021.xml");
19               props.storeToXML(fos, "Właściwości startowe", StandardCharsets.UTF_8);
20           } catch (IOException e) {
21               e.printStackTrace();
22           }
23   
24           DerbyUtil.close(fos);
25       }
26   }
27   

Po uruchomieniu klasy otrzymujemy plik r021.xml:

1    <?xml version="1.0" encoding="UTF-8"?>
2    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
3    <properties>
4    <comment>Właściwości startowe</comment>
5    <entry key="password">abcdefgh</entry>
6    <entry key="create">true</entry>
7    <entry key="user">Jacek</entry>
8    <entry key="nazwa">ąęśćżźółń</entry>
9    </properties>
10   

Odczytywanie

Klasa R021a.java
1    package aderby.start;
2    
3    import aderby.DerbyUtil;
4    
5    import java.io.*;
6    import java.util.*;
7    import java.util.Map.*;
8    
9    public class R021a {
10       public static void main(String[] args) {
11           FileInputStream fis = null;
12           Properties props = new Properties();
13           try {
14               fis = new FileInputStream("aderby/src/resources/props/r021.xml");
15               props.loadFromXML(fis);
16           } catch (IOException e) {
17               e.printStackTrace();
18           }
19           Set<Entry<Object, Object>> pr = props.entrySet();
20           for (Entry<Object, Object> entry : pr) {
21               String nazwa = (String) entry.getKey();
22               String value = (String) entry.getValue();
23               System.out.println(nazwa + "=" + value);
24           }
25           DerbyUtil.close(fis);
26       }
27   }
28   

Po uruchomieniu klasy na konsoli zobaczymy:

password=abcdefgh
create=true
user=Jacek
nazwa=ąęśćżźółń

Pliki do ściągniecia

Klasa R021.java
Klasa R021a.java
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 wszyskich wpisach w projekcie. W przypadku pliku module-info.java może być potrzebne skreślenie niepotrzebnych wpisów.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *