属性.属性
sample.user = "sampleUser"
sample.age = "sampleAge"
sample.location = "sampleLocation"
我可以通过 prop.getProperty("sample.user") 从属性文件中获取属性值。
我想知道下面的情况是否可能:
prop.getProperty("sample.*");
结果:
示例用户<br/>
样本年龄
示例位置
有人可以建议是否有任何方法可以从属性文件中获取上述结果吗?
一种解决方案是获取整个属性文件并遍历它。 但是我的属性文件很长,我认为这会导致 性能问题,因为我需要经常调用它。
Anther 会使用 .xml 文件而不是 .properties 文件。
最佳答案
A Properties
对象(对象形式的 .properties
文件)只是一个 Hashtable<Object,Object>
(和一个 Map
)。不适合 2016 年的任何用途,但非常实用。
提取匹配项并不是特别低效,即使是 000 行也应该在很短的时间内返回(可能只有几毫秒)。这完全取决于您需要多久检查一次。如果您只需要它们一次,只需缓存结果 matchingValues
并引用它。
不,你不能这样做 prop.getProperty("sample.*");
直接,但代码通过 Map
非常简单接口(interface):
Properties p = new Properties();
p.setProperty("sample.user", "sampleUser");
p.setProperty("sample.age", "sampleAge");
p.setProperty("sample.location", "sampleLocation");
Pattern patt = Pattern.compile("sample.*");
final List<String> matchingValues = new ArrayList<>();
for (Entry<Object,Object> each : p.entrySet()) {
final Matcher m = patt.matcher((String) each.getKey());
if (m.find()) {
matchingValues.add((String) each.getValue() );
}
}
System.out.println(matchingValues);
上述匹配和构建在我 5 岁的 iMac 上花费了 0.16 毫秒。
切换到 XML 表示会更复杂,加载和处理速度肯定会更慢。
关于java - 在 java 中使用 property.getProperty ("sample.*"从属性文件获取所有属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35929151/