属性文件

时间:2016-12-23 14:23:46

标签: java properties

我有一个属性(无法更改此文件),它看起来像:

aaa.bbb.ccc.first=my first value
aaa.bbb.ccc.second=my second value
aaa.bbb.ccc.third=my third value

如果我在java类中需要任何值,我使用i18n.getText("aaa.bbb.ccc.first")但它仅适用于单个值。

问题是因为我不知道:

- 值的名称

- aaa.bbb.ccc中有多少值.~

如何获得值列表aaa.bbb.ccc~?

3 个答案:

答案 0 :(得分:1)

您可以使用MapFilter。使用MapFilter(Properties p, String prefix)构造函数。

public void test() {
    Properties props = new Properties();
    props.put("aaa.bbb.ccc.first", "my first value");
    props.put("aaa.bbb.ccc.second", "my second value");
    props.put("aaa.bbb.ccc.third", "my third value");
    props.put("Other.props", "others");
    MapFilter<String> filtered = new MapFilter(props, "aaa.bbb.ccc.");
    for (Map.Entry<String, String> e : filtered.entrySet()) {
        System.out.println("Key: " + e.getKey() + " Value: " + e.getValue());
    }
    System.out.println(filtered);

}

答案 1 :(得分:0)

哈希映射不适用于您要执行的查找类型:Intel® 64 and IA-32 Architectures Optimization Reference ManualTries。在radix trees中有一个Patricia trie数据结构(即二进制基数树)的实现:只需从你的Map<String, Whatever>创建一个trie(你有一个很好的构造函数)和{{1获取其密钥具有该前缀的所有条目的子图。

答案 2 :(得分:0)

属性有一个方法propertyNames()。您可以使用它来获取所有键,然后从那里做任何你想做的事。