java - "Resource bundle"用于保存其他本地化数据

标签 java properties dictionary settings resourcebundle

我需要类似于 ResourceBundles 的系统但我不会用它进行本地化。基本上,我需要存储多个版本的设置。该设置的一个版本是字符串到字符串映射,可以用 Properties 文件表示。这些设置版本必须轻松保留到应用程序 .jar 内的文件系统(类似于 PropertyResourceBundle)。

这个想法是拥有不同版本的应用程序设置(设置配置文件),由字符串类型的键值对表示,可以根据用户的决定在应用程序启动时进行选择。同样,这些不是语言版本,因此 ResourceBundle (根据其 javadoc)不是实现它的正确方法。

有什么简单的方法可以在不自己实现整个想法的情况下做到这一点吗?请不要建议第三方它应该只使用 Java SE 类。


编辑:我忘了提及一个重要的细节。我很难获得这样的流:Thread.currentThread().getContextClassLoader().getResourceAsStream("/your/resource/here");。这是因为包含属性文件的项目由 Ant 编译,并在实际运行的不同 GUI 项目中用作动态加载的库。我可能将所有属性文件都放在固定项目文件夹中,但由于 Thread.currentThread().getContextClassLoader() 返回 GUI 项目的上下文,并且我不知道放置属性文件的 .jar 在该项目中的位置通过 Ant 我不知道使用什么作为 "/your/resource/here"

最佳答案

我可能误解了这个问题,但在我看来,你可以轻松地做这样的事情:

InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("/your/resource/here");
Properties prop = new Properties();
prop.load(inputStream);

这在 Java EE 环境中也是安全的,如果您想要更改设置,您可以随时调用您。

更新:只要资源位于类路径上,您就应该能够在不知道资源的完整路径的情况下找到它。

关于java - "Resource bundle"用于保存其他本地化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13392862/

相关文章:

java - 在后台运行应用程序

最方便表示关系数据库的Java对象结构

java - 使用 spock 进行单元测试 - 在私有(private)字段上测试交互

java - Eclipse 和 R 中的 StatET

object - 作为对象的数字,或存储数字的属性

php - 有没有办法将 Python 中的字典提取到本地 namespace 中?

c# - 在包含类中,使用属性还是字段?

java - DoublePropertyBase 中的 get() 和 GetValue() 有什么区别?

dictionary - 如何让 FxCop 自定义词典发挥作用?

python - 如何在Python中从字典中打印2个或更多随机键