2011-08-08 71 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將加載相應的特定於語言環境的文件。

相關問題