我正在创建要ping的IP地址列表,用户可以在其中添加到列表中,然后以site.name1 = ... site.name2 = ...的形式保存到属性文件中。
目前,我有一个固定数量的for循环,是否有一种方法可以获取属性文件中的条目数,因此我可以在for循环中设置它而不是等待异常?
PropertiesConfiguration config = configs.properties(new File("IPs.properties"));
//initially check for how many values there are - set to max increments for loop
for (int i = 0; i < 3; i++) { //todo fix
siteName = config.getString("site.name" + i);
siteAddress = config.getString("site.address" + i);
SiteList.add(i, siteName);
IPList.add(i, siteAddress);
}
我浏览了文档和其他问题,但它们似乎无关。
最佳答案
根据文档,在我看来,您应该可以使用PropertiesConfiguration#getLayout#getKeys以字符串的形式获取所有键的集合。
我不得不稍微修改一下代码以使用apache-commons-configuration-1.10
PropertiesConfiguration config = new PropertiesConfiguration("ips.properties");
PropertiesConfigurationLayout layout = config.getLayout();
String siteName = null;
String siteAddress = null;
for (String key : layout.getKeys()) {
String value = config.getString(key);
if (value == null) {
throw new IllegalStateException(String.format("No value found for key: %s", key));
}
if (key.equals("site.name")) {
siteName = value;
} else if (key.equals("site.address")) {
siteAddress = value;
} else {
throw new IllegalStateException(String.format("Unsupported key: %s", key));
}
}
System.out.println(String.format("name=%s, address=%s", siteName, siteAddress));