java中的属性 - 我们可以使用单个值的逗号分隔键吗?

时间:2010-02-01 19:11:25

标签: java properties

我希望在我的java应用程序的属性文件中为单个值提供多个键(> 1)。一种简单的方法是在属性文件中的单独行中定义每个键,并为所有这些键定义相同的值。这种方法增加了属性文件的可维护性。另一种方式(我认为可能是聪明的方式)是使用单行中的值定义逗号分隔的键。 e.g。

  key1,key2,key3=value

Java.util.properties不支持此功能。以前有人做过类比吗?我做谷歌但没有找到任何东西。

- manish

3 个答案:

答案 0 :(得分:5)

我不知道现有的解决方案,但实施起来应该非常简单:

String key = "key1,key2,key3", val = "value";
Map<String, String> map = new HashMap<String, String>();
for(String k : key.split(",")) map.put(k, val); 
System.out.println(map);

答案 1 :(得分:4)

属性文件的一个好处是它们很简单。没有复杂的语法可供学习,而且它们很容易被人看到。

想知道属性foo的价值是多少?快速扫描左栏,直到看到“foo”。

就个人而言,如果我看到类似的属性文件,我会觉得很困惑。

如果那是你真正想要的,那么实施起来应该很简单。快速的第一次刺伤可能如下所示:

  • 打开文件
  • 每行:
    • trim()空白
    • 如果该行为空或以#开头,请继续
    • 拆分为“=”(限制设为2),为您提供密钥和值
    • 在“,
    • 上拆分键
    • 对于每个密钥,trim()并将其添加到地图中,并附加trim()'d值

就是这样。

答案 2 :(得分:2)

java.util.Properties扩展java.util.Hashtable以来,您可以使用Properties加载数据,然后对数据进行后期处理。

使用java.util.Properties加载数据而不是自己滚动数据的好处是,属性的​​语法实际上是fairly robust,已经支持了许多有用的功能,您可能最终必须重新使用实现(例如跨多行,转义等分割值)。