Вопрос-ответ

How to use Java property files?

Как использовать файлы свойств Java?

У меня есть список пар ключ / значение конфигурационных значений, которые я хочу сохранить как файлы свойств Java, а позже загрузить и выполнить итерацию.

Вопросы:


  • Нужно ли мне хранить файл в том же пакете, что и класс, который будет их загружать, или есть какое-то конкретное место, куда его следует поместить?

  • Файл должен заканчиваться каким-либо определенным расширением или .txt НОРМАЛЬНО?

  • Как я могу загрузить файл в код

  • И как я могу перебирать значения внутри?

Переведено автоматически
Ответ 1

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

Properties properties = new Properties();
try {
properties.load(new FileInputStream("path/filename"));
} catch (IOException e) {
...
}

Выполнить итерацию следующим образом:

for(String key : properties.stringPropertyNames()) {
String value = properties.getProperty(key);
System.out.println(key + " => " + value);
}
Ответ 2

  • Вы можете сохранить файл где угодно. Если вы хотите сохранить его в своем jar-файле, вам потребуется использовать Class.getResourceAsStream() или ClassLoader.getResourceAsStream() для доступа к нему. Если это в файловой системе, то все немного проще.


  • Подойдет любое расширение, хотя, по моему опыту, .properties более распространено


  • Загрузите файл с помощью Properties.load, передав через InputStream или a StreamReader, если вы используете Java 6. (Если вы используете Java 6, я бы, вероятно, использовал UTF-8 и a Reader вместо кодировки ISO-8859-1 по умолчанию для потока.)


  • Выполните итерацию по нему, как вы выполняете итерацию по обычному Hashtable (который Properties является производным от), например, используя keySet(). В качестве альтернативы вы можете использовать перечисление, возвращаемое propertyNames() .


Ответ 3

Если вы поместите файл свойств в тот же пакет, что и class Foo , вы можете легко загрузить его с помощью

new Properties().load(Foo.class.getResourceAsStream("file.properties"))

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

Если вы используете расширение * .properties, вы можете получить поддержку редактора, например, в Eclipse есть редактор файлов свойств.

Ответ 4

Существует множество способов создания и чтения properties файлов:


  1. Сохраните файл в том же пакете.

  2. Рекомендуем .properties расширение, однако вы можете выбрать свое собственное.

  3. Используйте эти классы, расположенные по адресу java.util package => Properties, ListResourceBundle, ResourceBundle классы.

  4. Для чтения свойств используйте iterator или enumerator или прямые методы класса Properties or java.lang.System.

ResourceBundle класс:

 ResourceBundle rb = ResourceBundle.getBundle("prop"); // prop.properties
System.out.println(rb.getString("key"));

Properties класс:

Properties ps = new Properties();
ps.Load(new java.io.FileInputStream("my.properties"));
java