Файл properties (властивості) – використовується в Java для зберігання конфігураційних даних, або параметрів проекту у форматі ключ=значення. Такі файли зазвичай мають розширення .properties.
Наприклад я створив файл config.properties, що містить дані для доступу до бази даних:

Для отримання/збереження даних файлу properties, Java має клас java.util.Properties, котрий є підкласом Hashtable. Крім того, цей клас можна використовувати для отримання властивостей системи.
Отримання властивостей з файлу .properties
Код для читання властивостей з мого файлу config.properties:
package wiki.it.notes.properties;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
public class Main {
public static void main(String[] args) {
var main = new Main();
var user = main.getConfigProperty("db.user");
var password = main.getConfigProperty("db.password");
var host = main.getConfigProperty("db.host");
System.out.printf("%s %s %s%n", user, password, host);
}
public String getConfigProperty(String key) {
var properties = new Properties();
try (var fileInputStream = new FileInputStream("src/main/resources/config.properties")){
properties.load(fileInputStream);
} catch(IOException e) {
e.printStackTrace();
}
return properties.getProperty(key);
}
}Метод load завантажує властивості файлу за допомогою об’єкту FileInputStream (рядок 20).
Для читання окремої властивості за ключем, клас Properties має метод getProperty:
- getProperty(String key) – шукає властивість по ключу. Якщо властивість не знайдено повертає null
- getProperty(String key, String defaultValue) – шукає властивість по ключу. Якщо властивість не знайдено, повертає значення за замовчуванням, котре було передано в параметрі методу
Результат виконання програми:

Запис властивостей в файл .properties
Для прикладу попередньо створюю порожній файл new.config.properties:

Код котрий спочатку завантажує властивості зі вже існуючого файлу config.properties, а потім записує їх в новий файл new.config.properties:
package wiki.it.notes.properties;
import java.io.*;
import java.util.Properties;
public class Main {
public static void main(String[] args) {
var main = new Main();
main.setConfigProperties();
}
public void setConfigProperties() {
var properties = new Properties();
try (var fileInputStream = new FileInputStream("src/main/resources/config.properties");
var fileOutputStream = new FileOutputStream("src/main/resources/new.config.properties"))
{
// Get properties from config.properties
properties.load(fileInputStream);
// Set properties new.config.properties
properties.setProperty("db.name", "PostgreSQL");
properties.store(fileOutputStream, "Write properties");
} catch(IOException e) {
e.printStackTrace();
}
}
}- в рядку 19, відбувається завантаження властивостей з файлу config.properties
- метод store(OutputStream out, String comments) об’єкту Properties, записує поточний список властивостей у вихідний потік FileOutputStream, після чого відбувається їх збереження у файл new.config.properties (рядок 23). Другим параметром метод store приймає рядок коментарів, що буде додано до файлу
- метод properties.setProperty(key, value) додає окрему властивість, до списку вже завантажених (рядок 22)
Результат виконання програми:

Всі властивості було збережено у файл new.config.properties. Також до файлу додано коментар, разом з датою запису.