我需要类似于 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/