Apache以a。<no> .b </no>的格式提供配置读取属性

时间:2011-01-18 17:19:46

标签: java configuration-files apache-commons

我有一个名为

的属性文件
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 个答案:

答案 0 :(得分:1)

我通常使用像

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

这会产生计数器值必须连续的约束。

答案 1 :(得分:1)

如果您对属性文件本身有任何控制权,可以执行以下操作。如果你被锁定在那种格式中,我认为你无能为力。

但是,如果你没有锁定这种格式,这里有几个解决方案:

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)");

使用parens,您可以使用从零开始的指标访问列表中的单个元素。这有点难以理解,但它会起作用。

答案 2 :(得分:0)

api已经在机上了。见Configuration#subset