Zielony Smok - logo witryny

Properties – zapisywanie i odczytywanie (2)

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, które maja kodowanie UTF-8.

Możemy uzyć różnych klas. Tutaj pokazuję użycie klas FileWriter i FileReader.

Zapisywanie – klasa Writer

Klasa R020.java
package aderby.start;

import aderby.DerbyUtil;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.Properties;

public class R020 {
    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", "ąęśćżźółń");
        FileWriter wr = null;
        try {
            wr = new FileWriter("aderby/src/resources/props/r020.properties", StandardCharsets.UTF_8);
            props.store(wr, "Właściwości startowe");
        } catch (IOException e) {
            e.printStackTrace();
        }
        DerbyUtil.close(wr);
    }
}

Po uruchomieniu klasy otrzymamy plik r020.properties:

#Właściwości startowe
#Fri Nov 11 16:39:16 CET 2022
create=true
nazwa=ąęśćżźółń
password=abcdefgh
user=Jacek

Odczytywanie – klasa Reader

Klasa R020a.java
package aderby.start;

import aderby.DerbyUtil;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Set;

public class R020a {
    public static void main(String[] args) {
        FileReader fr = null;
        Properties props = new Properties();
        try {
            fr = new FileReader("aderby/src/resources/props/r020.properties", StandardCharsets.UTF_8);
            props.load(fr);
        } 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));
        String user = props.getProperty("user");
        System.out.println(user);
        DerbyUtil.close(fr);
    }
}

Po użyciu klasy na konsoli zobaczymy:

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

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.