Что такое формат файла PROPERTIES?
Файлы с расширением .properties используются технологией Java для хранения свойств и настраиваемых параметров приложения. Они также могут содержать строки для интернационализации и локализации, что делает их стандартным форматом для пакетов сообщений i18n в Java-приложениях и фреймворках, таких как Spring.
Каждая строка в файле .properties содержит один параметр. Каждый параметр хранится как пара строк: первая содержит имя параметра (называемое ключом), а вторая - его значение. Ключи и значения разделяются символами =, : или пробелом. Строки, начинающиеся с # или !, считаются комментариями и игнорируются парсером. Обратная косая черта (\) в конце строки позволяет продолжить значение на следующей строке.
По умолчанию файлы .properties имеют кодировку ISO-8859-1 (Latin-1). Символы, не входящие в латиницу, должны записываться в виде последовательностей Unicode-экранирования \uXXXX - в отличие от файлов YAML или файлов XML, которые нативно поддерживают UTF-8. В Java 9 была введена поддержка загрузки файлов .properties в UTF-8 при явном указании кодировки.
Редактирование файлов .properties
Файлы .properties можно свободно изменять в любом текстовом редакторе. Однако существуют и более продвинутые инструменты для редактирования файлов, оснащенные дополнительными функциями, не поддерживаемыми обычными текстовыми редакторами. Использование этих инструментов позволяет:
- проверять валидность данных
- создавать новые ключи
- синхронизировать имена ключей в файлах локализации
- выполнять автоматическое двустороннее преобразование символов, отличных от ASCII, в экранирование
\uXXXXи обратно - интегрироваться с Eclipse
Дополнительная информация
Доступ к файлам .properties в Java-приложениях осуществляется через класс java.util.Properties. Обычно они упаковываются как ресурсы classpath внутри архивов JAR или WAR и загружаются во время выполнения - фиксированного каталога по умолчанию для них нет. Формат .ini выполняет аналогичную роль в средах, не связанных с Java, в то время как файлы .env часто используются в современных контейнеризированных развертываниях.
Безопасность и защита
РИСК: LOWФайл .properties является текстовым и не может исполнять код, поэтому его открытие безопасно. Есть два нюанса: (1) они часто содержат секреты - пароли баз данных, API-ключи, строки подключения - поэтому не вставляйте их в ненадежные онлайн-инструменты и не фиксируйте в публичных репозиториях. (2) Риск редактирования: опечатка, неверная кодировка (сохранение в UTF-8 там, где ожидается ISO-8859-1, может испортить символы) или лишний знак могут помешать запуску Java-приложения. Всегда делайте резервную копию оригинала перед изменением значения.
Детали формата
в двух словахПрограммы, открывающие файлы PROPERTIES
Технические подробности
глубокая спецификация| Кодировка по умолчанию | ISO-8859-1 (Latin-1) |
| Поддержка UTF-8 | Доступна начиная с Java 9+ через явный аргумент кодировки в Properties.load() |
| Символы не-ASCII | Должны быть представлены как Unicode-последовательности \uXXXX при использовании кодировки ISO-8859-1 |
| Разделитель ключа и значения | =, : или неэкранированный пробел - первое вхождение разделяет ключ и значение |
| Синтаксис комментариев | # или ! в начале строки |
| Продолжение строки | Символ \ в конце строки объединяет следующую строку с текущим значением; начальные пробелы на строке продолжения удаляются |
| Обрезка пробелов | Пробелы перед ключами и между разделителем и значением удаляются автоматически |
| Поведение при дублировании ключей | Разрешено парсером; последнее определение неявно перезаписывает предыдущие |
| Класс Java API | java.util.Properties |
| MIME-тип | text/plain |
| Магические байты / сигнатура | Отсутствуют - обычный текст без бинарного заголовка; идентифицируется по расширению файла и структуре строк «ключ=значение» |
| Поддерживаемые escape-последовательности | \n, \t, \r, \\, \ (экранированный пробел в ключах/значениях), \uXXXX |
| Разработчик / сопровождающий | Sun Microsystems / Oracle (часть платформы Java) |
| Типовое развертывание | Упаковываются как ресурсы classpath внутри архивов JAR или WAR; загружаются во время выполнения через getResourceAsStream() |
| Принятие в экосистеме | Используется Java SE, Spring Framework, Android (устаревшее), Apache Ant, Maven и многими сторонними инструментами |
| Выпущен | 1996 (Java 1.0, java.util.Properties) |
| Открыть стандартное | Да · без роялти |
| Спецификация | docs.oracle.com |
Конвертации PROPERTIES
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах PROPERTIES.