Пример файла свойств чтения и записи Java

В этом уроке Java вы научитесь читать файл свойств с помощью метода Properties.load(). Также мы будем использовать метод Properties.setProperty() для записи нового свойства в файл .properties.

1. Настройка

Ниже приведен файл свойств, который мы будем использовать в нашем примере.

firstName=LokeshlastName=Guptablog=howtodoinjavatechnology=java

2. Чтение файла свойств

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

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

Пример 1: Чтение файла .properties в Java

В данном примере мы считываем свойства из файла app.properties, который находится в classpath. Класс PropertiesCache действует как кэш для загруженных свойств.

Файл загружает свойства лениво, но только один раз.

import java.io.IOException;import java.io.InputStream;import java.util.Properties;import java.util.Set;public class PropertiesCache{private final Properties configProp = new Properties();private PropertiesCache(){//Private constructor to restrict new instancesInputStream in = this.getClass().getClassLoader().getResourceAsStream("application.properties");System.out.println("Reading all properties from the file");try {configProp.load(in);} catch(IOException e) {e.printStackTrace();}}//Bill Pugh Solution for singleton patternprivate static class LazyHolder{private static final PropertiesCache INSTANCE = new PropertiesCache();}public static PropertiesCache getInstance(){return LazyHolder.INSTANCE;}public String getProperty(String key){return configProp.getProperty(key);}public Set<String> getAllPropertyNames(){return configProp.stringPropertyNames();}public boolean containsKey(String key){return configProp.containsKey(key);}}

В приведенном выше коде мы использовали технику Билла Пью для создания экземпляра синглтона.

Давайте проверим приведенный выше код.

public static void main(String[] args){//Get individual propertiesSystem.out.println(PropertiesCache.getInstance().getProperty("firstName"));System.out.println(PropertiesCache.getInstance().getProperty("lastName"));//All property namesSystem.out.println(PropertiesCache.getInstance().getAllPropertyNames());}

Вывод программы:

Read all properties from fileLokeshGupta[lastName, technology, firstName, blog]

3. Запись в файл свойств

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

Пример 2: Программа Java для записи новой пары ключ-значение в файл свойств

Итак, если вы столкнулись с подобной ситуацией, то создайте еще два метода в PropertiesCache.java следующим образом:

public void setProperty(String key, String value){configProp.setProperty(key, value);}public void flush() throws FileNotFoundException, IOException {try(final OutputStream outputstream= new FileOutputStream("application.properties");) {configProp.store(outputstream,"File Updated");outputstream.close();}}
  • Используйте метод setProperty(k, v) для записи нового свойства в файл свойств.
  • Используйте метод flush(), чтобы записать обновленные свойства обратно в файл application.properties.
PropertiesCache cache = PropertiesCache.getInstance();if(cache.containsKey("country") == false){cache.setProperty("country", "INDIA");}//Verify propertySystem.out.println(cache.getProperty("country"));//Write to the filePropertiesCache.getInstance().flush();

Вывод программы:

Reading all properties from the fileINDIA

А обновленный файл свойств выглядит так:

#File Updated#Fri Aug 14 16:14:33 IST 2020firstName=LokeshlastName=Guptatechnology=javablog=howtodoinjavacountry=INDIA

Вот и все в этом простом и понятном руководстве по чтению и записи файлов свойств с использованием Java.

Прокрутить вверх