属性与资源包

时间:2011-08-08 06:21:21

标签: java

我阅读了有关属性和资源包的内容。但我无法区分这些。何时使用Properties文件以及何时使用Resource bundle。

要加载属性文件,请使用以下代码

Properties tempProp = new Properties();
FileInputStream propsFile = new FileInputStream(xyz.properties);
tempProp.load(propsFile);

加载资源包

ResourceBundle labels =
    ResourceBundle.getBundle("xyz", currentLocale);
Enumeration bundleKeys = labels.getKeys();

在这两种情况下(在资源包和Properites中)我们都使用属性文件。我发现的一个区别是,为了存储我们使用属性文件的应用程序特定数据,并使用i18n数据,我们使用资源包。我不知道我是对的。

我想知道上面两个的用法。这两者有什么区别。

4 个答案:

答案 0 :(得分:41)

是的,你正在思考正确的方向。

资源包没有来使用属性文件 - 它只是一个实现(PropertyResourceBundle)。属性文件实际上只是一个字符串到字符串的映射 - 可以用于i18n,但不一定是。

ResourceBundle为您提供了一种为特定区域设置请求适当对象(通常是字符串)的一致方法,具有回退等。这通常(但不总是)由每种语言的单独属性文件支持。

是的:如果你正在处理i18n,你应该使用ResourceBundle;如果您只需要在文本文件中保留字符串到字符串的地图,则可以直接使用Properties

答案 1 :(得分:7)

ResourceBundle有助于加载特定于语言环境的属性。如果每个语言环境示例DE,CN等具有不同的属性文件,则ResourceBundle将加载适当的语言环境特定文件。

答案 2 :(得分:0)

  1. 通常用于配置文件的属性,不是为国际化(i18n)文件设计的。例如log4j.properties或作为您自己的配置文件。
  2. ResourceBundle用于国际化(i18n),ResourceBundle的“魔术”不仅是键值对,而且可以使用相同的键将其设置为特殊的语言环境(语言,区域/国家/地区,变量)。

是的,是的。这取决于您的需求。

答案 3 :(得分:0)

Resource Bundle:始终将您的属性文件视为类路径的一部分。如果您部署项目,属性文件实际上会进入实际部署。

属性类加载属性文件,但属性文件不一定在类路径中,也不应该是部署文件的一部分。它可能在操作系统的某个地方或某个文件夹中。

相关问题