„Днес проучваме друга нова и интересна тема: имоти. “
„В 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));
}
„Ах. Всичко изглежда си дойде на мястото. Благодаря ти, Риши. Ще използвам това страхотно нещо.“
GO TO FULL VERSION