Zielony Smok - logo witryny

Properties – zapisywanie i odczytywanie (1)

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 są kodowane w UTF-8.

Możemy użyć różnych klas. Tutaj pokazuję użycie FileOutputStream i FileInputStream.

Zapisywanie – klasa FileOutputStream

Klasa R019.java
package aderby.start;

import aderby.DerbyUtil;

import java.io.*;
import java.util.*;

public class R019 {
    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/r019.properties");
            props.store(fos, "Właściwości startowe");
        } catch (IOException e) {
            e.printStackTrace();
        }
        DerbyUtil.close(fos);
    }
}

Po uruchomieniu klasy na konsoli zobaczymy zapisany plik z własciwościami

#Właściwości startowe
#Sat Nov 12 09:57:34 CET 2022
create=true
nazwa=ąęśćżźółń
password=abcdefgh
user=Jacek

Odczytywanie – klasa FileInputStream

Klasa R019a.java
package aderby.start;

import aderby.DerbyUtil;

import java.io.*;
import java.util.*;
import java.util.Map.*;

public class R019a {
    public static void main(String[] args) {
        FileInputStream fis = null;
        Properties props = new Properties();
        try {
            fis = new FileInputStream("aderby/src/resources/props/r019.properties");
            props.load(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));
        String user = props.getProperty("user");
        System.out.println(user);
        DerbyUtil.close(fis);
    }
}

p>Po uruchomieniu klasy na konsoli zobaczymy:

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

Pliki do ściągniecia

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.