我想知道在JAVA上加载.propertie文件的最佳方法是什么,我在这里环顾四周但是找不到我看的东西。这是加载它的最佳方法。 我将它用于游戏开发。
此致 Migue
答案 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");