„Днес проучваме друга нова и интересна тема: имоти.

„В Java е обичайно програмите да се правят гъвкави и лесно адаптивни, т.е. лесно конфигурируеми.“

„Например, веднъж на час програмата ви копира файлове от определена директория, компресира ги и ви ги изпраща по имейл. За да направи това, програмата трябва да знае директорията, от която ще бъдат взети файловете, и имейл address къде трябва да бъдат изпратени. Такива данни обикновено се съхраняват не в codeа на приложението, а в отделни файлове със свойства ."

Данните в този файл се съхраняват като двойки ключ-стойност, разделени със знак за equalsство.

Пример
data.properties file
directory = c:/text/downloads
email = zapp@codegym.cc

„Отляво на знака е името (ключа), отдясно е стойността.“

„Значи това е един вид текстово представяне на HashMap?“

— Като цяло, да.

"За удобство при работа с такива файлове, Java има специален клас Properties. Класът Properties наследява Hashtable<Object,Object>. Може дори да се мисли като Hashtable, който може да се зареди от файл."

„Ето методите му:“

Метод Описание
void load(Reader reader) Зарежда свойства от file, представен от обект Reader
void load(InputStream inStream) Зарежда свойства от file, представен от обект InputStream
void loadFromXML(InputStream in) Заредете свойства от XML файл
Object get(Object key) Връща стойността за посочения ключ. Този метод е наследен от Hashtable
String getProperty(String key) Връща стойност на свойство (низ) по ключ.
String getProperty(String key, String defaultValue) Връща стойност на свойство по ключ or defaultValue, ако няма такъв ключ.
Set<String> stringPropertyNames() Връща списък с всички ключове

„С други думи, всъщност трябва да извършите само две операции – да заредите данни от няHowъв файл в обект Properties и след това да получите тези свойства с помощта на метода getProperty (). Е, и не забравяйте, че можете да използвате обекта Properties като HashMap . "

„Ето още един пример:“

Код
// 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"));

„А. Значи създаваме обект Properties и след това предаваме файл към него. Към метода за зареждане. И след това просто извикваме getProperty. Нали?“

— Да.

„И вие също казахте, че може да се използва като HashMap? Какво имахте предвид?“

„Класът Properties наследява Hashtable, който е същият като HashMap, но всичките му методи са синхронизирани. Можете просто да покажете всички стойности от file със свойства на екрана по следния начин:“

Код
// 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));
}

„Ах. Всичко изглежда си дойде на мястото. Благодаря ти, Риши. Ще използвам това страхотно нещо.“