ASK       CORE       EXT       Class Properties     docs

----------------------------------------------------------------------------------------------------------------

        //     1.   Info
        //     3.   Mетоды класса   Properties

        //   11.   Примеры использования класса Properties
        //           12.   Вычитывание из файла с расширением типа .properties
        //                   13.   Пример из BaseJava
        //           14.   Вычитывание из файла в зависимости от расширения файла

----------------------------------------------------------------------------------------------------------------

        //     1.   Info

--   Класс Properties унаследован от Hashtable<Object,Object> а это   --   тот же HashMap, просто все методы его синхронизированы
--   Его даже можно рассматривать как HashTable, который умеет загружать себя из файла

Класс Properties   --   Класс в Java, который имеет методы для вычитывания данных из файла properties         //     Класс Properties    

----------------------------------------------------------------------------------------------------------------

        //     3.   Mетоды класса   Properties

get()
getProperty()
load()
loadFromXML()
stringPropertyNames()


get()         //     Object get(Object key)         //     Возвращает значение по ключу. Метод унаследован от HashTable

getProperty()         //     String getProperty(String key)         //     Возвращает значение свойства (строку) по ключу

getProperty()         //     String getProperty(String key, String defaultValue)         //     Возвращает значение свойства по ключу или defaultValue, если такого ключа нет

load()         //     void load(Reader reader)         //     Загружает свойства из файла, представленного объектом Reader

load()        //     void load(InputStream inStream)         //     Загружает свойства из файла, представленного объектом InputStream

loadFromXML()         //     void loadFromXML(InputStream in)         //     Загружает свойства из XML-файла

stringPropertyNames()         //     Set<String> stringPropertyNames()         //     Возвращает список всех ключей

----------------------------------------------------------------------------------------------------------------

        //     12.   Вычитывание из файла с расширением типа .properties

File file = new File("c:/data.properties");
Properties properties = new Properties();
properties.load(new FileReader(file));

// Пройти по всем ключам и печатать все их значения на консоль
for (String key : properties.stringPropertyNames()) {
System.out.println(properties.get(key));
}

// Класс Properties можно использовать как HashMap.
// Класс Properties унаследован от Hashtable, а это – тот же HashMap, просто все методы его синхронизированы.

----------------------------------------------------------------------------------------------------------------

        //     13.   Пример из BaseJava

File file = new File("c:/data.properties");

Properties properties = new Properties();
properties.load(new FileReader(file));

String email = properties.getProperty("email");
String directory = properties.getProperty("directory");

//     Т.е. фактически нужно выполнить всего две операции :   загрузить в объект Properties данные из какого-нибудь файла ( метод load() ), а затем получить эти свойства с помощью метода getProperty()

//     Получить числовое значение из объекта Properties
int maxFileSize = Integer.parseInt(properties.getProperty("max.size", "10000"));

----------------------------------------------------------------------------------------------------------------

        //     14.   Вычитывание из файла в зависимости от расширения файла

--   Метод считывает свойства из переданного ему файла fileName
--   Расширение файла fileName может быть xml, или какое то другое, или расширения может не быть
--   Если ошибка то будет возвращаться пустой объект


public Properties getProperties(String fileName) {
        Properties properties = new Properties();
        int pos = fileName.lastIndexOf(".");
        String ext = pos >= 0 ? fileName.substring(pos) : "";

        try {
                switch (ext) {
                        case ".xml": {
                                FileInputStream fileInputStream = new FileInputStream(fileName);
                                properties.loadFromXML(fileInputStream);
                                fileInputStream.close();
                                break;
                        }
                        case ".txt": {
                                FileReader fileReader = new FileReader(fileName);
                                properties.load(fileReader);
                                fileReader.close();
                                break;
                        }
                        default: {
                                FileInputStream fileInputStream = new FileInputStream(fileName);
                                properties.load(fileInputStream);
                                fileInputStream.close();
                                break;
                        }
                }
        }

        catch (Exception e) {
                System.out.println(e.getMessage());
                return properties;
        }

        return properties;
}