合并字节流实现加载指定位置的国际化文件
public static String getLangValue2(String path, String key, String lang) {
Locale locale = new Locale(lang);
if (lang.indexOf("_") > 0) {
String[] lans = lang.split("_");
locale = new Locale(lans[0], lans[1]);
}
SequenceInputStream sis = null;
InputStreamReader reader = null;
String msg = "";
try {
String resourceKey = pathKey(path, locale);
ResourceBundle rb = RESOURCE_CACH.get(resourceKey);
if (rb == null) {
String proFilePath = Const.servletRealPath + path;
rb = new RootResourceBundle(proFilePath, locale, "UTF-8");
String defFilePath = Const.servletRealPath + path + ".properties";
if (StringUtils.isBlank(lang)) {
proFilePath += ".properties";
} else {
proFilePath += "_" + locale + ".properties";
}
InputStream is1 = new FileInputStream(defFilePath);
InputStream is2 = new FileInputStream(proFilePath);
sis = new SequenceInputStream(is1, is2);
reader = new InputStreamReader(sis, "UTF-8");
RESOURCE_CACH.put(resourceKey, rb);
is1.close();
is2.close();
}
msg = rb.getString(key);
// msg = new String(msg.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
Logger.exception(e);
} catch (MissingResourceException e) {
Logger.exception(e, "Can't find key " + key);
msg = "";
} catch (Exception e) {
Logger.exception(e);
msg = "";
} finally {
try {
if (sis != null) {
sis.close();
sis = null;
}
if (reader != null) {
reader.close();
reader = null;
}
} catch (IOException e) {
Logger.exception(e);
}
}
return msg;
}