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

标签 java

属性.属性

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/

相关文章:

java - 延迟数据包时的 TCP RST 数据包

Java 将类型信息与来自 toBytes 的 Byte[] 数组一起存储

java - 文件写入异步发生?

java - Java SWT中的“可调整大小”对话框

java - Java 中的进度条

java - Java 应用程序中的并发 - Cloud Run

java - Jersey - 验证不适用于查询参数

java - @AttributeOverride 是什么意思?

java - 在 Linux 服务器的后台运行 Java 应用程序

java - 你什么时候应该在intellij中输入 "rebuild project"