我想在我的Java应用程序的属性文件中有多个键(> 1)。一种简单的方法是在属性文件中将每个键定义在单独的行中,并将相同的值定义到所有这些键。这种方法增加了属性文件的可维护性。另一种方式(我认为这可能是聪明的做法)是用单行中的值定义逗号分隔的键。例如java中的属性 - 我们可以使用逗号分隔的单值键吗?
key1,key2,key3=value
Java.util.properties不支持此开箱即用。有没有人以前做过类似的事情?我没有谷歌,但没有找到任何东西。
--manish
我想在我的Java应用程序的属性文件中有多个键(> 1)。一种简单的方法是在属性文件中将每个键定义在单独的行中,并将相同的值定义到所有这些键。这种方法增加了属性文件的可维护性。另一种方式(我认为这可能是聪明的做法)是用单行中的值定义逗号分隔的键。例如java中的属性 - 我们可以使用逗号分隔的单值键吗?
key1,key2,key3=value
Java.util.properties不支持此开箱即用。有没有人以前做过类似的事情?我没有谷歌,但没有找到任何东西。
--manish
由于java.util.Properties
延伸java.util.Hashtable
,你可以使用Properties
加载数据,然后处理后的数据。
使用java.util.Properties
,而不是负荷运行自己的数据的好处是,对于性能的语法实际上是fairly robust,已经支持很多的,你可能最终不得不重新实现(如分裂值在整个有用的功能多行,逃生等)。
属性文件的好处之一是它们很简单。没有复杂的语法学习,而且它们很容易在眼睛上。
想知道属性foo
的价值是什么?快速扫描左栏,直到看到“foo”。
就我个人而言,如果我看到像这样的属性文件,我会觉得很困惑。
如果这是你真正想要的,应该很容易实现。一个快速的第一刺可能是这样的:
trim()
空白=
”(限制设置为2),留下您的密钥和值,
”的分割键trim()
并将其添加到地图中,随着trim()
倒是值就是这样。
我不知道现有的解决方案,但它应该是很容易实现:
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“保持简单”的建议。但你推荐的实现并不那么简单(你可以使用属性并对其进行后处理) – helios 2010-02-01 19:35:25
不要忘记属性文件遵循以下原则: Key = Value或Value = Key或两者(即key = key或value = value) 。 “=”号分开两个区域。 Apache Struts在引入LookupDispatchAction时广泛使用了这个特性。只是想添加我的2cent价值:-) – 2010-02-01 19:43:19
@Gentleman:也许Struts有一些特殊的Properties子类,但是常规的Java'Properties'只是key = value。 – 2010-02-01 19:58:49