- Get object properties android
- About
- Примеры работы с Java Properties
- Загрузка из файлов XML
- Как получить свойства?
- Как установить свойства
- Удалить свойства
- Хранение Properties
- Хранение в XML-файлах
- Properties
- Object.getOwnPropertyNames()
- Syntax
- Parameters
- Return value
- Description
- Examples
- Using Object.getOwnPropertyNames()
- Properties
Get object properties android
Android @Properties
This lib provides a simple way to read a .properties from assets folder.
You just have to extends from AssetsProperties and use @Property annotation to invoke the automatic property mapping.
It’s very simple with gradle 😉
Add mavenCentral as repository source:
And finnaly add this line inside dependencies < >section:
The + symbol indicates to gradle to get the latest version.
- See the sample if there are any doubts.
Super simple usage 😉
Android Properties can parse String , int , float , double and boolean values from file .properties .
Create a class that represents your file properties and extend from AssetsProperties class.
assets/config.properties
Config.java
You must use @Property annotation to map field as property field from file. Pass the name of property if it’s different from the field name in class.
Read another file properties
The default file for properties is called config.properties but if you need to read another file properties, just pass the name of file in the constructor:
Map property name
The @Property annotation uses the name of field as name of property field in file. So if the field name is diferent of the name in file, just pass the name of property by @Property(«property_name») .
Useful public methods
If you do not want to use @Property annotation or need only a reader property class you can use some public methods from AssetsProperties :
If the AssetsProperties can’t read the key then the defaultValue will be returned.
There are a simple test for the rating dialog. If you want to contribute check the tests too.
You must open an emulator before.
Licensed under the Apache License, Version 2.0 (the «License»); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an «AS IS» BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
About
Android Library for reading properties file stored in assets folder
Источник
Примеры работы с Java Properties
Большинству программ Java в какой-то момент необходимо использовать свойства, как правило, для хранения простых параметров в виде пар ключ-значение вне скомпилированного кода.
Таким образом, язык имеет поддержку класса для свойств – java.util.Properties – служебный класс, предназначенный для обработки файлов конфигурации этого типа.
В этой статье я покажу использование базового класса Properties, в том числе способы загрузки и сохранения в формате XML, как управлять парами ключ-значение в объекте свойств, например извлекать значения, обновлять, получить его размер и как использовать список по умолчанию для объекта.
- Properties является подклассом Hashtable. Он используется для ведения списков значений, в которых ключ является строкой, а значение также является строкой.
- Класс Properties используется многими другими классами Java. Например, это тип объекта, возвращаемый System.getProperties() при получении значений.
- Одна полезная возможность класса состоит в том, что вы можете указать свойство по умолчанию, которое будет возвращаться, если никакое значение не связано с определенным ключом.
- Несколько потоков могут совместно использовать один объект без необходимости внешней синхронизации.
- Properties определяет переменную экземпляра.
- Properties() создает объект Properties, который не имеет значений по умолчанию.
- Properties (Properties propDefault): второй создает объект, который использует propDefault в качестве значения по умолчанию.
№ | Метод и описание |
---|---|
1 | String getProperty (String key) Возвращает значение, связанное с ключом. Пустой объект возвращается, если ключ отсутствует в списке или в списке свойств по умолчанию. |
2 | String getProperty (String key, String defaultProperty) возвращает значение, связанное с ключом; defaultProperty возвращается, если ключ не находится ни в списке, ни в списке свойств по умолчанию. |
3 | void list (PrintStream streamOut) Отправляет список свойств в выходной поток, связанный с streamOut. |
4 | void list (PrintWriter streamOut) Отправляет список свойств в выходной поток, связанный с streamOut. |
5 | void load (InputStream streamIn) throws IOException Вводит список свойств из входного потока, связанного с streamIn. |
6 | Перечисление propertyNames() Возвращает перечисление ключей. Сюда входят также ключи, найденные в списке свойств по умолчанию. |
7 | Объект setProperty (String key, String value) Связывает значение с ключом. Возвращает предыдущее значение, связанное с ключом, или возвращает null, если такой ассоциации не существует. |
8 | void store (OutputStream streamOut, String description) После записи строки, указанной в описании, список свойств записывается в выходной поток, связанный с streamOut. |
Начнем с примера загрузки пар ключ-значение из файлов свойств; мы загружаем два файла, которые мы имеем в нашем classpath:
Обратите внимание, что в файлах свойств рекомендуется использовать “.properties”, в suffix это не обязательно.
Теперь мы можем очень просто загрузить их в экземпляр Properties:
Если содержимое файла соответствует требованиям формата файла свойств, оно может быть правильно проанализировано классом Properties.
Загрузка из файлов XML
Помимо файлов, класс Properties также может загружать файлы XML, которые соответствуют определенным спецификациям DTD.
Вот пример для загрузки пар ключ-значение из файла XML – icons.xml:
Теперь давайте загрузим:
Как получить свойства?
Мы можем использовать getProperty (ключ String) и getProperty (ключ String, String defaultValue), чтобы получить значение по его ключу.
Если пара ключ-значение существует, оба метода будут возвращать соответствующее значение. Но если такой пары ключ-значение не существует, первая вернет null, а вторая вместо нее вернет defaultValue.
Обратите внимание, что хотя класс Properties наследует метод get() от класса Hashtable, я не рекомендую использовать его для получения значения. Поскольку его метод get() будет возвращать значение Object, которое может быть приведено только к String, а метод getProperty() уже обрабатывает значение Object правильно.
Код ниже выдаст исключение:
float appVerFloat = (float) appProps.get(«version»);
Как установить свойства
Мы можем использовать метод setProperty(), чтобы обновить существующую пару ключ-значение или добавить новую.
Класс Properties наследует метод put() и метод putAll() от класса Hashtable, я не рекомендую использовать их по той же причине, что и для метода get(): в свойствах могут использоваться только строковые значения.
Приведенный ниже код не будет работать так, как вы хотите, когда вы используете getProperty() для получения его значения, он вернет null:
appProps.put(«version», 2);
Удалить свойства
Если вы хотите удалить пару ключ-значение, вы можете использовать метод remove().
Хранение Properties
Класс Properties предоставляет метод store() для вывода пар ключ-значение.
Второй параметр используется для комментариев. Если вы не хотите писать какой-либо комментарий, просто используйте для него значение null.
Хранение в XML-файлах
Класс Properties также предоставляет метод storeToXML() для вывода пар ключ-значение в формате XML.
Второй параметр такой же, как и в методе store().
Объект Properties может содержать другой объект Properties в качестве списка свойств по умолчанию. Список свойств по умолчанию будет найден, если ключ свойства не найден в исходном.
Помимо “app.properties”, у нас есть еще один файл – “default.properties” – в classpath:
По умолчанию файлы свойств должны быть в кодировке ISO-8859-1 (Latin-1), поэтому обычно не следует использовать свойства с символами не из ISO-8859-1.
Мы можем обойти это ограничение с помощью таких инструментов, как JDK native2ascii или явное кодирование файлов, если это необходимо. Для файлов XML метод loadFromXML() и метод storeToXML() по умолчанию используют кодировку UTF-8.
Однако при чтении XML-файла, закодированного по-другому, мы можем указать это в объявлении DOCTYPE; запись также достаточно гибкая – мы можем указать кодировку в третьем параметре API storeToXML().
Полный исходный код проекта доступен на GitHub
Средняя оценка / 5. Количество голосов:
Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.
Или поделись статьей
Видим, что вы не нашли ответ на свой вопрос.
Источник
Properties
— Сегодня мы изучаем еще одну новую и интересную тему – свойства (properties).
В Java принято делать программы гибкими и легко настраиваемыми. Иногда еще говорят легко конфигурируемыми (от конфигурация).
Например, твоя программа раз в час копирует файлы из некоторой директории, архивирует их и отсылает тебе на email. Для этого программе надо знать директорию, откуда брать файлы и email, куда их посылать. Такие данные принято хранить не в коде программы, а в отдельных файлах свойств – properties-файлах.
Данные в таком файле хранятся в виде пар ключ-значение, разделенные знаком равно.
Слева от знака равно – имя (ключ), справа – значение.
— Т.е. это что-то типа текстового представления HashMap?
Для удобной работы с такими файлами в Java есть специальный класс – Properties. Класс Properties унаследован от Hashtable . Его даже можно рассматривать как HashTable, который умеет загружать себя из файла.
Метод | Описание |
---|---|
void load(Reader reader) | Загружает свойства из файла, представленного объектом Reader |
void load(InputStream inStream) | Загружает свойства из файла, представленного объектом InputStream |
void loadFromXML(InputStream in) | Загружает свойства из XML-файла |
Object get(Object key) | Возвращает значение по ключу. Метод унаследован от HashTable |
String getProperty(String key) | Возвращает значение свойства (строку) по ключу |
String getProperty(String key, String defaultValue) | Возвращает значение свойства по ключу или defaultValue, если такого ключа нет |
Set stringPropertyNames() | Возвращает список всех ключей |
Т.е. фактически тебе нужно выполнить всего две операции – загрузить в объект Properties данные из какого-нибудь файла, а затем получить эти свойства с помощью метода getProperty(). Ну и не забывай, что можешь пользоваться объектом Properties как HashMap.
Вот тебе пример:
— Ага. Т.е. мы создаем объект Properties, затем передаем в него файл. В метод load, а затем просто вызываем getProperty. Так?
— А ты еще говорил, что им можно пользоваться как HashMap? Что ты имел в виду?
— Класс Properties унаследован от Hashtable, а это – тот же HashMap, просто все методы его синхронизированы. Вот так можно просто вывести на экран все значения из файла свойств:
— Ага. Вроде все стало на свои места. Спасибо, Риша, буду пользоваться такой крутой штукой.
Источник
Object.getOwnPropertyNames()
The Object.getOwnPropertyNames() method returns an array of all properties (including non-enumerable properties except for those which use Symbol) found directly in a given object.
Syntax
Parameters
The object whose enumerable and non-enumerable properties are to be returned.
Return value
An array of strings that corresponds to the properties found directly in the given object.
Description
Object.getOwnPropertyNames() returns an array whose elements are strings corresponding to the enumerable and non-enumerable properties found directly in a given object obj . The ordering of the enumerable properties in the array is consistent with the ordering exposed by a for. in loop (or by Object.keys() ) over the properties of the object. According to ES6, the integer keys of the object (both enumerable and non-enumerable) are added in ascending order to the array first, followed by the string keys in the order of insertion.
In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError . In ES2015, a non-object argument will be coerced to an object.
Examples
Using Object.getOwnPropertyNames()
If you want only the enumerable properties, see Object.keys() or use a for. in loop (note that this will also return enumerable properties found along the prototype chain for the object unless the latter is filtered with hasOwnProperty() ).
Items on the prototype chain are not listed:
Источник
Properties
— Сегодня мы изучаем еще одну новую и интересную тему – свойства (properties).
В Java принято делать программы гибкими и легко настраиваемыми. Иногда еще говорят легко конфигурируемыми (от конфигурация).
Например, твоя программа раз в час копирует файлы из некоторой директории, архивирует их и отсылает тебе на email. Для этого программе надо знать директорию, откуда брать файлы и email, куда их посылать. Такие данные принято хранить не в коде программы, а в отдельных файлах свойств – properties-файлах.
Данные в таком файле хранятся в виде пар ключ-значение, разделенные знаком равно.
Слева от знака равно – имя (ключ), справа – значение.
— Т.е. это что-то типа текстового представления HashMap?
Для удобной работы с такими файлами в Java есть специальный класс – Properties. Класс Properties унаследован от Hashtable . Его даже можно рассматривать как HashTable, который умеет загружать себя из файла.
Метод | Описание |
---|---|
void load(Reader reader) | Загружает свойства из файла, представленного объектом Reader |
void load(InputStream inStream) | Загружает свойства из файла, представленного объектом InputStream |
void loadFromXML(InputStream in) | Загружает свойства из XML-файла |
Object get(Object key) | Возвращает значение по ключу. Метод унаследован от HashTable |
String getProperty(String key) | Возвращает значение свойства (строку) по ключу |
String getProperty(String key, String defaultValue) | Возвращает значение свойства по ключу или defaultValue, если такого ключа нет |
Set stringPropertyNames() | Возвращает список всех ключей |
Т.е. фактически тебе нужно выполнить всего две операции – загрузить в объект Properties данные из какого-нибудь файла, а затем получить эти свойства с помощью метода getProperty(). Ну и не забывай, что можешь пользоваться объектом Properties как HashMap.
Вот тебе пример:
— Ага. Т.е. мы создаем объект Properties, затем передаем в него файл. В метод load, а затем просто вызываем getProperty. Так?
— А ты еще говорил, что им можно пользоваться как HashMap? Что ты имел в виду?
— Класс Properties унаследован от Hashtable, а это – тот же HashMap, просто все методы его синхронизированы. Вот так можно просто вывести на экран все значения из файла свойств:
— Ага. Вроде все стало на свои места. Спасибо, Риша, буду пользоваться такой крутой штукой.
Источник