gpt4 book ai didi

java - 如何在java中使用单个管理器类访问多个属性文件

转载 作者:行者123 更新时间:2023-12-01 10:09:47 25 4
gpt4 key购买 nike

我有大约 10 个用于不同目的的属性文件,我正在为每个文件创建一个新类来访问其中的内容。我在想是否有可能使用类似 .getValue(key,propertFileName) 的方法创建一个类。

所以如果我打电话 .getValue("name.type","sample.properties");

下面是我用来从属性文件获取值的代码,我使用的是 Core Java。

public class PropertiesCache {

private final Properties configProp = new Properties();

private PropertiesCache() {
InputStream in = this.getClass().getClassLoader().getResourceAsStream("sample.properties");
System.out.println("Read all properties from file");
try {
configProp.load(in);
} catch (IOException e) {
e.printStackTrace();
}
}

private static class LazyHolder {
private static final PropertiesCache INSTANCE = new PropertiesCache();
}

public static PropertiesCache getInstance() {
return LazyHolder.INSTANCE;
}

public String getProperty(String key) {
return configProp.getProperty(key);
}

public Set<String> getAllPropertyNames() {
return configProp.stringPropertyNames();
}

public boolean containsKey(String key) {
return configProp.containsKey(key);
}
}

通过下面的调用,我可以从sample.properties 文件中获取值。

PropertiesCache.getInstance().getProperty("name.type");

通过上面的代码,我可以从单个属性文件中获取内容。为了从多个文件中获取值,我应该为每个文件创建一个单独的 Cache 类。

您能否建议我如何使用单个管理器类从不同的属性文件中获取属性值。

所以.getValue("name.type","sample.properties")应该返回与 PropertiesCache.getInstance().getProperty("name.type") 相同的值做到了。

最佳答案

将各种属性对象放入映射中,并使用文件名作为键和读取的属性包作为值来填充该映射。

“获取”将类似于:

Map<String, Properties> propsCache = .... // declare and fill elsewhere

public String getProperty(String name, String file) {
Properties p = propsCache.get(file);
return p.getProperty(name);
}

...根据需要添加错误处理。

关于java - 如何在java中使用单个管理器类访问多个属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36201561/

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