Java Apache commons配置读取格式为a的属性。<;否>;。B

Java Apache commons配置读取格式为a的属性。<;否>;。B,java,configuration-files,apache-commons,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 我正在使用属性配置类并阅读属性。 如何知道属性中的窗口数。有模式搜索吗?我通常使用 int i = 0; String val; for(;;) { val = props.get("foo" + i); if (null ==

我有一个属性文件,上面写着

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

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

window.3.height=150
window.3.width=100
我正在使用
属性配置
类并阅读属性。
如何知道属性中的窗口数。有模式搜索吗?我通常使用

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

这就限制了计数器值必须是连续的。

如果您对属性文件本身有任何控制权,您可以做一些事情。如果你被锁定在这种模式中,我不相信你能做什么

但是,如果您没有被锁定在该格式中,以下是一些解决方案:

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>
window.height=100
window.width=80

window.height=50
window.width=30

window.height=150
window.width=100
获取窗口数

属性配置

您的另一个选项(仍然涉及属性文件)有点做作。您的属性文件将更改为如下所示:

<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>
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,您可以使用基于零的标记访问列表中的单个元素。理解起来有点困难,但它会起作用。

api中已经有了它。请参见

这是可行的,但我想知道是否可以从commons配置本身确定长度。最终,我不得不循环思考,我还没有找到一种方法来做到这一点,所以我将观察是否有其他人也有更好的运气。