我阅读了有关属性和资源包的内容。但我无法区分这些。何时使用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数据,我们使用资源包。我不知道我是对的。
我想知道上面两个的用法。这两者有什么区别。
答案 0 :(得分:41)
是的,你正在思考正确的方向。
资源包没有来使用属性文件 - 它只是一个实现(PropertyResourceBundle
)。属性文件实际上只是一个字符串到字符串的映射 - 可以用于i18n,但不一定是。
ResourceBundle
为您提供了一种为特定区域设置请求适当对象(通常是字符串)的一致方法,具有回退等。这通常(但不总是)由每种语言的单独属性文件支持。
是的:如果你正在处理i18n,你应该使用ResourceBundle
;如果您只需要在文本文件中保留字符串到字符串的地图,则可以直接使用Properties
。
答案 1 :(得分:7)
ResourceBundle有助于加载特定于语言环境的属性。如果每个语言环境示例DE,CN等具有不同的属性文件,则ResourceBundle将加载适当的语言环境特定文件。
答案 2 :(得分:0)
是的,是的。这取决于您的需求。
答案 3 :(得分:0)
Resource Bundle:始终将您的属性文件视为类路径的一部分。如果您部署项目,属性文件实际上会进入实际部署。
属性类加载属性文件,但属性文件不一定在类路径中,也不应该是部署文件的一部分。它可能在操作系统的某个地方或某个文件夹中。