Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

Работа с Java property файлами: место хранения, загрузка, итерация

Быстрый ответ

Для манипуляций с property-файлами в Java используйте класс Properties. Вот пример ключевого кода:

Java
Скопировать код
Properties props = new Properties();
try (InputStream input = new FileInputStream("config.properties")) {
    props.load(input);  // Загружаем свойства из файла
    System.out.println(props.getProperty("key"));  // Выводим значение по ключу
} catch (IOException e) {
    e.printStackTrace();  // Обрабатываем исключение в случае ошибки
}

Файл config.properties следует оформить следующим образом:

key=value

Учтите, что IOException требует обработки, а использование конструкции try-with-resources обеспечивает закрытие входного потока.

Кинга Идем в IT: пошаговый план для смены профессии

Работа с разными расположениями файлов и различными расширениями

Обращение к property-файлам не обязано быть строго к формату .properties; допустимо использование .txt и других форматов. Размещайте файлы в удобном для вас месте, указывая корректный путь к ним через FileInputStream или загружайте их из classpath при помощи Class.getResourceAsStream(). В случае необходимости локализации рекомендуется обращение к ResourceBundle.

Просмотр свойств и обработка исключений

Для ознакомления со содержимым свойств используйте перебор в Properties:

Java
Скопировать код
for (String key : props.stringPropertyNames()) {
   String value = props.getProperty(key);
   System.out.println(key + " = " + value);  // Выводим пары ключ-значение
}

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

Поддержка файлов в кодировке UTF-8

Если ваша версия Java 6 не поддерживает символы за пределами ASCII, применяйте следующий подход:

Java
Скопировать код
try (Reader reader = new InputStreamReader(new FileInputStream("config.properties"), StandardCharsets.UTF_8)) {
   props.load(reader);  // Загружаем файл в кодировке UTF-8
}

Это позволит корректно обрабатывать данные на многих языках.

Доступ к свойствам в JAR-файлах

Чтобы извлечь свойства из JAR-файла, используйте метод getResourceAsStream():

Java
Скопировать код
try (InputStream input = ClassName.class.getResourceAsStream("/config.properties")) {
   props.load(input);  // Загружаем свойства из JAR-файла
}

Файлы, расположенные в корне classpath, следует загружать, начиная путь со слеша.

Обработка исключений при доступе к свойствам

Обязательно проводите обработку загрузки property-файлов в блоке try-catch, чтобы надежно защититься от возникающих исключений и предотвратить сбои приложения из-за отсутствующих файлов.

Визуализация

Можно представить property-файлы как электронную систему хранения конфигурации:

Markdown
Скопировать код
🗄️ Кейс Конфигурации (Property-файл Java)
 ├─👕 'database.url' (Ключ)
 │   └─ 'jdbc:mysql://localhost:3306/mydb' (Значение)
 ├─👖 'database.user'
 │   └─ 'admin'
 ├─🧦 'database.password'
 │   └─ 'p@ssw0rd!'
 └─👔 'logging.level'
     └─ 'INFO'

Каждый элемент соответствует паре ключ-значение:

properties
Скопировать код
# Содержимое кейса
database.url=jdbc:mysql://localhost:3306/mydb
database.user=admin
database.password=p@ssw0rd!
logging.level=INFO

Оранизация property-файлов для удобства

Для упрощения доступа и поддержки, разместите property-файлы в той же директории, где находятся классы, использующие их. Это поможет упростить как разработку, так и поддержку приложения.

Полезные материалы

  1. Properties (Java Platform SE 8) — Документация к классу java.util.Properties.
  2. Properties (The Java™ Tutorials) — Учебник по свойствам в Java.
  3. Примеры Java-кода — Примеры использования класса java.util.Properties.
  4. Основные Функции — Раздел о внешней конфигурации в Spring Boot.
  5. Понимание и чтение property-файлов в Java — Статья на Medium о работе с property-файлами Java.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой класс используется для работы с property-файлами в Java?
1 / 5