Apache настраивает свойства чтения конфигурации в формате a. <no>.b - PullRequest
1 голос
/ 18 января 2011

У меня есть файл свойств, который говорит

window.1.height=100
window.1.width=80

window.2.height=50
window.2.width=30

window.3.height=150
window.3.width=100

Я использую класс PropertiesConfiguration и читаю свойства.Как я могу узнать количество окон в свойствах.Есть ли поиск по шаблону

Ответы [ 3 ]

1 голос
/ 04 марта 2011

Есть несколько вещей, которые вы можете сделать, если у вас есть контроль над самим файлом свойств. Если вы заблокированы в этом формате, я не верю, что вы можете что-то сделать.

Однако, если вы не заблокированы в этом формате, вот несколько решений:

Конфигурация XML

Переход от файла свойств к формату файла XML. Примерно так:

<windows>
  <window>
    <width>80</width>
    <height>100</height>
  </window>
  <window>
    <width>30</width>
    <height>50</height>
  </window>
  <window>
    <width>100</width>
    <height>150</height>
  </window>
</windows>

Затем используйте XMLConfiguration вместо PropertiesConfiguration. Вы могли бы тогда позвонить

config.getList("windows").size()

чтобы узнать количество окон.

Свойства конфигурации

Ваш другой вариант, который все еще включает файл свойств, немного более изобретателен. Ваш файл свойств изменится и будет выглядеть так:

window.height=100
window.width=80

window.height=50
window.width=30

window.height=150
window.width=100

Затем, чтобы узнать количество окон, которые вы бы назвали

config.getList("window.height").size();

Однако, используя этот метод, вам придется изменить способ получения значений. Например, чтобы получить ширину и высоту второго окна, вы должны использовать это:

config.getInteger("window.width(1)");
config.getInteger("window.height(1)");

Используя парены, вы можете получить доступ к отдельному элементу списка, используя нулевые знаки. Это немного сложнее понять, но это сработает.

1 голос
/ 18 января 2011

Я обычно использую что-то вроде

int i = 0;
String val;
for(;;) {
  val = props.get("foo" + i);
  if (null == val) {
     break;
  }
  //process val
}

Это накладывает ограничение на то, что значения счетчика должны быть смежными.

0 голосов
/ 10 ноября 2015

API уже есть на борту. См. Конфигурация # подмножество

...