可能重复:
在java中读取属性文件的最佳方法?
我想知道在 JAVA 上加载 .propertie 文件的最佳方式是什么,我在这里四处张望,但找不到我所看到的。问题是加载它的最佳方式。我用它来开发游戏。
问候,米格
可能重复:
在java中读取属性文件的最佳方法?
我想知道在 JAVA 上加载 .propertie 文件的最佳方式是什么,我在这里四处张望,但找不到我所看到的。问题是加载它的最佳方式。我用它来开发游戏。
问候,米格
那个怎么样?
Properties properties = new Properties();
BufferedInputStream stream = new BufferedInputStream(new FileInputStream("example.properties"));
properties.load(stream);
stream.close();
String sprache = properties.getProperty("lang");
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");
此解决方案适用于 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");