-2

可能重复:
在java中读取属性文件的最佳方法?

我想知道在 JAVA 上加载 .propertie 文件的最佳方式是什么,我在这里四处张望,但找不到我所看到的。问题是加载它的最佳方式。我用它来开发游戏。

问候,米格

4

3 回答 3

8

那个怎么样?

Properties properties = new Properties();
BufferedInputStream stream = new BufferedInputStream(new FileInputStream("example.properties"));
properties.load(stream);
stream.close();
String sprache = properties.getProperty("lang");
于 2012-11-18T16:17:45.700 回答
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");

于 2012-11-18T16:21:04.143 回答
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");
于 2012-11-18T16:47:46.950 回答