在JAVA中加载属性文件的最佳方法是什么

时间:2012-11-18 16:14:10

标签: java file properties

  

可能重复:
  Best way to read properties file in java?

我想知道在JAVA上加载.propertie文件的最佳方法是什么,我在这里环顾四周但是找不到我看的东西。这是加载它的最佳方法。 我将它用于游戏开发。

此致 Migue

3 个答案:

答案 0 :(得分:7)

那怎么样?

Properties properties = new Properties();
BufferedInputStream stream = new BufferedInputStream(new FileInputStream("example.properties"));
properties.load(stream);
stream.close();
String sprache = properties.getProperty("lang");

答案 1 :(得分:3)

Properties properties = new Properties();
InputStream inputStream = getClass().getResourceAsStream("foo.properties");
properties.load(inputStream);
inputStream.close();

如果foo.properties的文件路径与加载属性文件的类不在同一个包中,则需要更改它们。例如,如果.properties文件位于com.example.properties.here,则使用InputStream的以下文件路径。

InputStream inputStream = getClass().getResourceAsStream("/com/example/properties/here/foo.properties");

答案 2 :(得分:1)

此解决方案适用于UTF-8并自动发现类路径中的属性。

public class I18nBean {

private ResourceBundle resourceBundle;

private static I18nBean instance = new I18nBean("app"); //app.properties

public static I18nBean getInstance() {
    return instance;
}

/**
    @param propertyFileName - without extension, i.e 
    if you have app.properties, pass "app"
*/
private I18nBean(String propertyFileName) {
    resourceBundle = ResourceBundle.getBundle(propertyFileName);
}

public String get(String key) {
    try {
        String foundString = resourceBundle.getString(key);
        return convertToUTF8(foundString);
    } catch (MissingResourceException e) {
        return "";
    }
}

private String convertToUTF8(String str)  {
    try {
        return new String(str.getBytes("ISO-8859-1"), Charset.forName("UTF-8"));
    } catch (UnsupportedEncodingException e) {
        return str; //not real case
    }
}

}

用法:

I18nBean i18nBean = I18nBean.getInstance();
i18nBean.get("application.name");