Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что делают файлы *.properties? 
:(
    Опции темы
Dims
Дата 5.6.2008, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 4
Всего: 11



Часто встречаю в различных библиотеках файлы *.properties, которые лежат там же, где и классы и в которых записаны настройки программ.

Какова природа этих файлов?

Сперва я думал, что эти файлы просто кладутся туда, откуда их можно прочитать при помощи ClassLoader.getResourceAsStream.

Но потом я заметил, что в некоторых из этих файлов лежат как бы операторы присваивания на языка Java, с упоминанием классов и полей через точку. 

Нет ли случайно какой-то встроенной возможности читать такие файлы? 

Допустим, нет ли такого, что если файл *.properties лежит в заданном месте, то при первой загрузке класса автоматически (без специального кода) инициализируются его статические члены по командам из файла?

Или это просто так сделали, чтоб имена параметров говорящими были, но читают их специально-написанные в данном ПО функции?
PM MAIL   Вверх
COVD
Дата 5.6.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

Нет ли случайно какой-то встроенной возможности читать такие файлы? 


Если посмотреть например, Java Desktop Application в Нетбинсе, то там так и сделано - каждый пакет имеет папку resources, куда можно положить проперти файл. Соответственно, IDE заточено под это. Имя проперти файла совпадает с именем класса, для которого предназначено. Возможность читать "встроена" не в JDK, а просто в проект добавляется служебная библиотека для обслуживания этих удобств. Но все равно в коде есть строка соответствующая, которую визард возможно генерирует. Очевидно, и имена параметров тоже считается удобным связывать с их полным путем, через точку. 

Если вы делаете рефакторинг, скажем, переименовываете класс, то IDE автоматически переименует и проперти файл. Это здорово, когда проперти файл поставляется с jar. Однако для персональных настроек это не удобно. Скажем, персональные настройки каждого клиента хранятся в базе данных на сервере, т.е. отдельно  от кода. Если что-то переименовать в коде, то в базе тоже надо все переименовывать, иначе связь через имя нарушается. 

 

Это сообщение отредактировал(а) COVD - 5.6.2008, 21:43
PM MAIL   Вверх
bytes
Дата 5.6.2008, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 17.10.2006
Где: Baku

Репутация: нет
Всего: нет



Подобные файлы встречалось и в JSP+Servlet+Struts
--------------------
?==! or !==?
PM MAIL ICQ MSN   Вверх
ecologist
Дата 6.6.2008, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 452
Регистрация: 28.2.2007

Репутация: 2
Всего: 9



В JAVA часто используется механизм SPI (Service Provider Interface) - когда для сервиса описан интерфейс, а его реализация может быть представлена различными классами. Т.к. JAVA позволяет загружать классы динамически, то можно подставлять реальные классы для интерфейса, просто прописав их реальные имена в property-файле.
PM MAIL   Вверх
AlexeyVorotnikov
Дата 6.6.2008, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Цитата(Dims @  5.6.2008,  21:20 Найти цитируемый пост)
Часто встречаю в различных библиотеках файлы *.properties, которые лежат там же, где и классы и в которых записаны настройки программ.

Какова природа этих файлов?

Простые текстовые файлы.
Цитата(Dims @  5.6.2008,  21:20 Найти цитируемый пост)

Сперва я думал, что эти файлы просто кладутся туда, откуда их можно прочитать при помощи ClassLoader.getResourceAsStream.

Именно для этого туда их и кладут.
Цитата(Dims @  5.6.2008,  21:20 Найти цитируемый пост)

Но потом я заметил, что в некоторых из этих файлов лежат как бы операторы присваивания на языка Java, с упоминанием классов и полей через точку. 

Нет ли случайно какой-то встроенной возможности читать такие файлы? 

Допустим, нет ли такого, что если файл *.properties лежит в заданном месте, то при первой загрузке класса автоматически (без специального кода) инициализируются его статические члены по командам из файла?

Нет. Такой фичи нет.
Цитата(Dims @  5.6.2008,  21:20 Найти цитируемый пост)

Или это просто так сделали, чтоб имена параметров говорящими были, но читают их специально-написанные в данном ПО функции? 


Да, это так.

Псмотрите на класс java.util.Properties. Он предназначен для работы с файлами *.properties.


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0672 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.