2

我需要类似的系统,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"

4

1 回答 1

2

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

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

这在 Java EE 环境中也是安全的,如果您想更改设置,您可以随时打电话给您。

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

于 2012-11-15T07:36:51.560 回答