gpt4 book ai didi

java - 如何在不加载的情况下检查 Java ResourceBundle 是否可加载?

转载 作者:搜寻专家 更新时间:2023-10-31 20:07:37 26 4
gpt4 key购买 nike

我想在不实际加载 ResourceBundle 的情况下检查它是否存在。

通常,我使用 Guice,在初始化时,我想检查是否存在,而在执行时,我想加载它。如果 bundle 不存在,我想要一份关于 RB 不存在的早期报告。

如果可以获取用于特定 ResourceBundle 的 ResourceBundle.Control 实例,我可以毫无问题地获取构建实际资源名称的基本信息(使用 toBundleName() 和 toResourceName()),但事实并非如此该级别的案例。

编辑:

好的,我找到了方法。我将创建一个可扩展的 ResourceBundle.Control(使用自定义 addFormat(String, Class))来存储所有包格式,然后使用我自己的另一种方法来检查特定区域设置的所有可能文件名(使用 Class. getResource,如下所示)。

编码说话:

class MyControl extends ResourceBundle.Control {
private Map<String,Class<? extends ResourceBundle>> formats = new LinkedHashMap();
public void addFormat(String format,Class<? extends ResourceBundle> rbType) {
formats.put(format, rbType);
}
public boolean resourceBundleExists(ClassLoader loader, String baseName, Locale locale) {
for (String format: formats.keySet()) {
// for (loop on locale hierarchy) {
if (loader.getResource(toResourceName(toBundleName(baseName, locale), format)) != null) {
return true;
}
// }
}
return false;
}
}

最佳答案

如果默认包必须存在,你可以这样做:

Class.getResource("/my/path/to/bundle.properties")

它会返回文件的 URL,如果不存在则返回 null。

如果你有很多,当然要使用正确的类或类加载器。

编辑:如果您有资源作为类,您还必须检查

Class.getResource("/my/path/to/bundle.class")

在 Java 6 中,您可以将资源包存储在 XML 中。我不知道 ResourceBundle 类如何查找此资源,但我敢打赌它以相同的方式查找。

关于java - 如何在不加载的情况下检查 Java ResourceBundle 是否可加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2055799/

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