Меню

Java файл настроек properties



Пример работы с Properties в Java

В наше время почти в каждом проекте используются различные статические файлы и данные, необходимые классам для безопасного и быстрого доступа. Примером таких конфигурационных файлов являются так называемые Файлы свойств, более известные как *.properties.

.properties — файловое расширение для файлов, которые используются в основном в технологиях Java для хранения конфигурационных параметров программы. Они также могут использоваться для хранения переменных строчной типа для локализации; они известны как Property Resource Bundles.

Каждый параметр сохраняется парой двух переменных строчной типа, одна сохраняет имя параметра (так называемый ключ), а другой сохраняет значение. Каждая строка файла .properties, как правило, хранит значения одного параметра. Несколько форматов являются допустимыми для .properties, в том числе ключ = значение, ключ: значение и сам ключ.

.properties файлы могут использовать знак решетки (#) или восклицательный знак (!) как первый, не пустой символ в строке для обозначения последующего текста в качестве комментария.

Например работы с .properties в Java

Для начала подготовим среду для работы и создадим проект (Рисунок 1):

Рисунок 1 — Пример проекта на Maven — очень удобно и функционально

Теперь посмотрим на структуру созданного проекта (Рисунок 2):

Рисунок 2 — Структура нашего проекта для работы с properties

Как видим, в папке Resources уже есть файл под названием config.properties. Вам нужно будет его создать вручную и наполнить данными, а именно (Рисунки 3-4):

Рисунок 3 — Создание файла путем нажатия ПКМ на папке resources -> New -> File

Рисунок 4 — Вводим название файла с расширением properties в появившемся диалоге и нажимаем ОК

Далее прописываем необходимые ключи и значения, как на рисунке 5:

Рисунок 5 — Файл с необходимыми параметрами

Пример обращения к файлу properties

Ниже представлена программа, демонстрирующая обращение к нашему конфигурационному файлу:

Источник

29.8. Java – Класс Properties

Класс Properties – это подкласс Hashtable. Он используется для хранения списков значений, в которых ключ является String, а значение также является String.

Класс Properties в Java используется множеством других классов. Например, это тип объекта, возвращаемый System.getProperties(), когда тот получает внешние значения.

Properties определяет следующие переменную экземпляра. Эта переменная содержит список свойств по умолчанию, связанный с объектом Properties.

Следующая программа показывает несколько методов, поддерживаемых этой структурой данных:

Содержание

Конструкторы

Вот список конструкторов, предоставляемые классом Properties.

Конструктор и описание
1 Properties()
Этот конструктор создает объёкт Properties, который не имеет значений по умолчанию.
2 Properties(Properties propDefault)
Создаёт объект, который использует propDefault для своих значений по умолчанию. В обоих случаях список свойств пустой.

Методы

Помимо методов, определённых Hashtable, Properties определяет следующие методы:

Метод и описание
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 Enumeration propertyNames()
Возвращает перечисление ключей, включая ключи, найденные в списке свойств по умолчанию.
7 Object setProperty(String key, String value)
Связывает значение с ключом. Возвращает предыдущее значение, связанное с ключом, или возвращает ноль, если такой связи не существует.
8 void store(OutputStream streamOut, String description)
После записи строки, указанной в описании, список свойств записывается в выходной поток, связанный с streamOut.

Пример

Следующая программа показывает несколько методов, поддерживаемых этой структурой данных:

Источник

Простой пример работы с Property файлами в Java

Property файлы присутствуют практически в каждом проекте, и сейчас я вам покажу простой пример их использования, а также расскажу, зачем они и где используются.

Читайте также:  Ubiquiti не могу войти в настройки

Шаг 0. Создание проекта

Начнем с того что создадим простой Maven проект, указав название и имя пакета:

Структура, которая получится в конце проекта довольно таки простая.

Как видите у нас только два файла, первый – Main.java, а второй – config.properties.

Шаг 2. Добавляем конфигурационные данные в проперти файл

Проперти файлы либо файлы свойств – предназначены, для того чтобы хранить в них какие-то статические данные необходимые проект, например логин и пароль к БД.

Давайте добавим в наш config.properties логин и пароль (это любые данные, для того чтобы продемонстрировать работу с property файлами).

Содержимое config.properties:

<ключ> – это уникальное имя, по которому можно получить доступ к значению, хранимому под этим ключом.

<значение> – это текст, либо число, которое вам необходимо для выполнения определённой логики в вашей программе.

Шаг 3. Получаем Property данные

Как можно видеть в структуре проекта выше, там есть класс Main.java давайте его создадим и напишем в нем следующее:

Обращаясь к property.getProperty(<ключ>) – вы получаете его значение.

Вот такой краткий, но думаю познавательный урок.

Источник

Как хранить настройки java программ?

Этот вопрос задает себе каждый разработчик любого серьезного приложения. Классическим решением этой задачи является использование класса Properties. Этот класс поддерживает коллекции свойств (properties) вида ключ/значение, где ключи и значения являются строками. Наличие методов сохранения и чтения коллекций в файлах, упрощает организацию физического хранения данных. Несмотря на удобство и простоту использования данного класса хочется обратить ваше внимание, что класс Properties является наследником устаревшего класса Hashtable [1]. Именно по этому рекомендуется использовать класс HashMap, который является аналогом Hashtable.

Для доступа к настройкам программы создадим класс AppSettings. Причем в блоке инициализации статических членов класса будет вызываться private конструктор данного класса. При этом создается единственный экземпляр данного объекта в статическую переменную SINGLETON при первом вызове из основного кода программы. Код, реализующий эту методику имеет вид:

public class AppSettings <
private AppSettings () <
fHashMap = new HashMap () ;
>
// . . .

private HashMap fHashMap;
private static AppSettings SINGLETON;
static <
SINGLETON = new AppSettings () ;
>
>

Таким образом к единственному экземпляру данного класса можно получить доступ из любого модуля программы, что напоминает глобальные переменные в других языках программирования. Коллекция HashMap позволяет хранить различные объекты, но мы пока ограничимся только строковыми. Методы доступа к данным могут иметь вид:

// Извлечение объекта из коллекции
public static Object get ( String key ) <
return SINGLETON.fHashMap.get ( key ) ;
>

// Извлечение объекта из коллекции
// при отсутствии данных возвращается значение по умолчанию
public static Object get ( String key, Object deflt ) <
Object obj = SINGLETON.fHashMap.get ( key ) ;
if ( obj == null ) <
return deflt;
> else <
return obj;
>
>

// Для упрощения извлечения данных типа int
public static int getInt ( String key, int deflt ) <
Object obj = SINGLETON.fHashMap.get ( key ) ;
if ( obj == null ) <
return deflt;
> else <
return new Integer (( String ) obj ) .intValue () ;
>
>

// Добавление объекта в коллекцию
public static void put ( String key, Object data ) <
// prevent null values. Hasmap allow them
if ( data == null ) <
throw new IllegalArgumentException () ;
> else <
SINGLETON.fHashMap.put ( key, data ) ;
>
>

Раз уж мы отказались от использования класса Properties, то изменим формат хранения объектов коллекции на более прогрессивный xml формат. Структура xml файла будет иметь вид:

Данная структура позволит нам в будущем хранить не только значения вида ключ/значение, но и другие типы объектов. Пока же, мы ограничимся строками, аналогично классу Properties. Код построения DOM дерева заданной структуры и трансформации в xml файл будет иметь вид:

Класс сериализации DOM дерева позаимствован в [2]. Для обратной операции чтения данных в коллекцию создадим следующий метод:

А пример вызова методов класса AppSettings в теле программы, показан в следующем участке кода:

File file = new File ( propDir, «settings.xml» ) ;
try <
AppSettings.clear () ;
AppSettings.load ( file ) ;
String lnfName = UIManager.getLookAndFeel () .getClass () .getName () ;
if ( AppSettings.get ( LF_KEY, lnfName ) != lnfName ) <
UIManager.setLookAndFeel (
( String ) AppSettings.get ( LF_KEY, lnfName )) ;
SwingUtilities.updateComponentTreeUI ( MainFrame. this ) ;
>

Читайте также:  Настройка обзора fallout 4

this .setSize ( new Dimension (
AppSettings.getInt ( WIDTH_KEY, getWidth ()) ,
AppSettings.getInt ( HEIGHT_KEY, getHeight ())
)) ;
> catch ( Exception e ) <
e.printStackTrace () ;
>

Как видно из приведенного кода, все достаточно тривиально. Просто вызываем нужный метод класса AppSettings создавать экземпляр которого не требуется. Можно реализовать еще пару методов для извлечения часто используемых типов данных для удобства использования, например getString().

Источник

Работа с файлами: файл настроек

Работа с файлами(символьный файл)
Задача: дан символьный файл F.получить файл g, образованный из файла F заменой всех его прописных.

Работа с файлами. Не находит файл
Здравствуйте. Файл лежит в той же папке, что и сам проект. Я его открываю: ifstream.

Работа с файлами. Файл-словарь
Задание: Есть текстовый файл-словарь, в каждой строке которого через символ табуляции записаны.

Работа с файлами (Текстовый файл)
Дана матрица А, имеющая 30 строк и 10 столбцов, содержащая оценки группы за 1-ый.

Друзья, помогите пожалуйста, похожая проблема:
есть 2 проекта и там и там использую FileInputStream для считывания настроек из файла.
В одном случае начинает искать в корне проекта, а в другом в корне eclipse.

Где можно настроить этот FileInputStream и как это вообще понимать? Почему Ява отталкивается от разных директорий?

Пытался про них прочитать. Вроде сложно как-то.

В итоге для точного понимания пример:
confStream = new FileInputStream(new File(«conf/properties.properties»));
получаем:
C:\Program Files\eclipse\conf\properties.properties
а хотелось бы:
D:\workspace\BusinessSupportSystem\conf\properties.propertie s

ибо весь проект тогда находится в Hg, включая этот злополучный файл с настройками.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Работа с файлами (дозапись в файл)
вообщем вот код не работает добавление в файл #include //IO #include .

Работа с файлами.Ввод,вывод в файл
Ввод/вывод в файл Что то не очень доходит. почитала там сайты всякие по теме, все равно не.

Работа с типизированными файлами. Вывод в файл
program tip; uses crt; type rec=record N:integer; Nr:string; type1:string; cena:integer;.

Работа с файлами — Не создается текстовый файл
Не создается текстовый файл. Не подскажите в чём ошибка? using System; using.

Работа с файлами (Вывести весь файл)
Не знаю как вывести сразу весь файл, получается только по одной строке, выручайте.

Источник

Примеры работы с 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. Количество голосов:

Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Источник

Adblock
detector