gpt4 book ai didi

java - 在 java 中使用 property.getProperty ("sample.*"从属性文件获取所有属性值

转载 作者:行者123 更新时间:2023-11-29 04:49:33 26 4
gpt4 key购买 nike

属性.属性

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com