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.