gpt4 book ai didi

java - ResourceBundle - 当文件系统中不存在属性文件时,无法计算出如何读取它

转载 作者:行者123 更新时间:2023-11-30 07:20:19 25 4
gpt4 key购买 nike

我有一个 EJB 2.1 应用程序,它引用一个属性文件以从中读取值。属性文件的文件名定义为

private static final String CONFIG_DIRECTORY = "config.";
private static final String PROPERTIES_FILE = CONFIG_DIRECTORY + "myapp";

要从属性文件加载和读取属性,进行以下调用,传入 PROPERTIES_FILE 作为属性文件名的名称

this.getProperties(PROPERTIES_FILE);

getProperties 方法使用 ResourceBundle 加载属性文件,如下所示。

public Properties getProperties (String propertyFileName) {
Properties properties = new Properties();
ResourceBundle resourceBundle = ResourceBundle.getBundle(propertyFileName);
Enumeration<String> keys = resourceBundle.getKeys();

while (keys.hasMoreElements()) {
String key = (String)keys.nextElement();
String value = resourceBundle.getString(key);
properties.put(key, value);
}
return properties;
}

现在我花了很长时间试图在应用程序的文件系统中找到一个名为 config.myapp 的文件,但它不存在。我什至在整个文件系统中搜索了该文件,但它不存在。我查看了所有文件夹、jar 文件等,但找不到名为 config.myapp 的文件

在应用程序的根目录中有一个名为“config”的文件夹,在该文件夹中有一个名为 myapp.properties 的文件,它确实具有应用程序正在读取的属性。难道 config.myapp 实际上指的是 config/myapp.properties 文件?如果是这样,那是如何工作的? ResourceBundle 是否以某种方式将 config.myapp 转换为 config/myapp.properties

最佳答案

用斜杠替换点并附加 .properties 是预期的行为。来自docs对于 ResourceBundle.getBundle:

Otherwise, getBundle attempts to locate a property resource file. It generates a path name from the candidate bundle name by replacing all "." characters with "/" and appending the string ".properties". It attempts to find a "resource" with this name using ClassLoader.getResource.

关于java - ResourceBundle - 当文件系统中不存在属性文件时,无法计算出如何读取它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14096698/

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