2011-08-08 144 views
44

我读了关于属性和资源包。但我无法区分这些。何时使用属性文件以及何时使用资源包。属性与资源包

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

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

加载资源束

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

在两种情况下(在资源束和性质在)我们使用属性文件。我发现的一个区别是,要存储应用程序特定的数据,我们使用属性文件并使用i18n数据,我们使用资源包。我不知道我是否正确。

我想知道使用上面两种。这两者有什么区别。

+2

你是100%的权利。 ResourceBundle对象包含特定于语言环境的对象。 – adatapost

回答

39

是的,你沿着正确的思路思考。

资源包不使用属性文件 - 它只是一个实现(PropertyResourceBundle)。属性文件是真的只是一个字符串到字符串的映射 - 这可以用于国际化,但并不一定如此。

ResourceBundle为您提供了一种为特定语言环境请求适当对象(通常是字符串)的一致方式,并带有后备等。这通常但并非总是由每种语言的单独属性文件支持。

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

+0

可以只使用ResourceBundle来获取属性吗? –

+1

@ChristianVielma:目前还不清楚你的意思。如果您不打算使用本地化资源,ResourceBundle并不合适。 –

+0

@Jon_Skeet感谢您的快速回答,我决定解释一下自己一点:http://stackoverflow.com/questions/14883000/why-not-use-resourcebundle-instead-of-properties –

6

资源包有助于加载设置特定的属性。如果每个语言环境示例都有不同的属性文件,例如DE,CN等ResourceBundle将加载相应的特定于语言环境的文件。

相关问题