„Dzisiaj badamy kolejny nowy i interesujący temat: właściwości ” .

„W Javie zwyczajowo tworzy się programy elastyczne i łatwe do dostosowania, tj. łatwo konfigurowalne”.

„Na przykład raz na godzinę twój program kopiuje pliki z określonego katalogu, kompresuje je i wysyła do ciebie e-mailem. Aby to zrobić, program musi znać katalog, z którego zostaną pobrane pliki, oraz adres e-mail gdzie należy je wysłać. Takie dane są zwykle przechowywane nie w kodzie aplikacji, ale w oddzielnych plikach właściwości ."

Dane w tym pliku są przechowywane jako pary klucz-wartość oddzielone znakiem równości.

Przykład
data.properties file
directory = c:/text/downloads
email = zapp@codegym.cc

„Po lewej stronie znaku znajduje się nazwa (klucz), po prawej wartość”.

„Więc to jest rodzaj tekstowej reprezentacji mapy HashMap?”

„Ogólnie rzecz biorąc, tak”.

„Dla wygody pracy z takimi plikami, Java ma specjalną klasę Properties. Klasa Properties dziedziczy Hashtable<Object,Object>. Można ją nawet traktować jako Hashtable, która może ładować się z pliku”.

„Oto jego metody:”

metoda Opis
void load(Reader reader) Ładuje właściwości z pliku reprezentowanego przez obiekt Reader
void load(InputStream inStream) Ładuje właściwości z pliku reprezentowanego przez obiekt InputStream
void loadFromXML(InputStream in) Załaduj właściwości z pliku XML
Object get(Object key) Zwraca wartość dla określonego klucza. Ta metoda jest dziedziczona z Hashtable
String getProperty(String key) Zwraca wartość właściwości (ciąg znaków) według klucza.
String getProperty(String key, String defaultValue) Zwraca wartość właściwości według klucza lub defaultValue, jeśli nie ma takiego klucza.
Set<String> stringPropertyNames() Zwraca listę wszystkich kluczy

„Innymi słowy, tak naprawdę musisz wykonać tylko dwie operacje — załadować dane z jakiegoś pliku do obiektu Properties , a następnie pobrać te właściwości za pomocą metody getProperty (). Cóż, nie zapominaj, że możesz użyć obiektu Properties , takiego jak HashMapa .

„Oto kolejny przykład:”

Kod
// The file that stores our project's properties
File file = new File("c:/data.properties");

// Create a Properties object and load data from the file into it.
Properties properties = new Properties();
properties.load(new FileReader(file));

// Get property values from the Properties object
String email = properties.getProperty("email");
String directory = properties.getProperty("directory");

// Get a numeric value from the Properties object
int maxFileSize = Integer.parseInt(properties.getProperty("max.size", "10000"));

„Ach. Więc tworzymy obiekt Właściwości, a następnie przekazujemy do niego plik. Do metody ładowania. A potem po prostu wywołujemy getProperty. Prawda?”

"Tak."

„I powiedziałeś też, że może być używany jako HashMap? Co miałeś na myśli?”

„Klasa Properties dziedziczy Hashtable, czyli to samo co HashMap, ale wszystkie jej metody są zsynchronizowane. Możesz po prostu wyświetlić wszystkie wartości z pliku właściwości na ekranie w ten sposób:”

Kod
// Get the file with the properties
File file = new File("c:/data.properties");

// Create a Properties object and load data from the file into it.
Properties properties = new Properties();
properties.load(new FileReader(file));

// Run through all the keys and display their values on the console
for (String key : properties.stringPropertyNames())
{
 System.out.println(properties.get(key));
}

„Ach. Wygląda na to, że wszystko się ułożyło. Dziękuję, Rishi. Zamierzam użyć tej fajnej rzeczy”.