I read about properties and resource bundle. But I was unable to get difference between these. When to use Properties file and when to use Resource bundle.
To load properties file use the following code
Properties tempProp = new Properties();
FileInputStream propsFile = new FileInputStream(xyz.properties);
tempProp.load(propsFile);
To load Resource bundle
ResourceBundle labels =
ResourceBundle.getBundle("xyz", currentLocale);
Enumeration bundleKeys = labels.getKeys();
In both of the cases (in resource bundle and in Properites) we are using properties file. The one difference I found is that to store application specific data we use properties file and to use i18n data we use resource bundle. I don’t know whether i am right or not.
I would like to know the use of the above two. What is the difference between these two.
Yes, you’re thinking along the right lines.
Resource bundles don’t have to use property files – it’s just one implementation (
PropertyResourceBundle). A properties file is really just a string-to-string mapping – and that can be used for i18n, but doesn’t have to be.ResourceBundlegives you a consistent way of requesting the appropriate object (usually a string) for a particular locale, with fallbacks etc. This is often, but not always, backed by a separate property file for each language.So yes: if you’re dealing with i18n, you should use
ResourceBundle; if you just need a string-to-string map persisted in a text file, it’s fine to usePropertiesdirectly.