【发布时间】:2015-09-04 03:48:52
【问题描述】:
我有这个函数,它将 .properties 文件中的值存储到树形图 (translatedMap) 中,然后从“keyMap”中检索新值并将它们也存储到“translatedMap”中。问题是无论我做什么,似乎总是将大写键与非大写键分开。这是我的代码:
Properties translation = new Properties(){
private static final long serialVersionUID = 1L;
@Override
public synchronized Enumeration<Object> keys() {
return Collections.enumeration(new TreeSet<Object>(super
.keySet()));
}
};
//creates file and stores values of keyMap into the file
try {
TreeMap<String, String> translatedMap = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
InputStreamReader in = new InputStreamReader(new FileInputStream(filePath), "UTF-8");
translation.load(in);
// Store all values to TreeMap and sort
Enumeration<?> e = translation.propertyNames();
while (e.hasMoreElements()) {
String key = (String) e.nextElement();
if (key.matches(".#")) {
} else {
String value = translation.getProperty(key);
translatedMap.put(key, value);
}
}
// Add new values to translatedMap
for (String key : keyMap.keySet()) {
// Handle if some keys have already been added; delete so they can be re-added
if (translatedMap.containsKey(key)) {
translatedMap.remove(key);
}
translatedMap.put(key, keyMap.get(key));
}
in.close();
translation.putAll(translatedMap);
File translationFile = new File(filePath);
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(translationFile, false), "UTF-8");
translation.store(out, null);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
我得到的输出是这样的:
CAPITALIZED_KEY1=value1
CAPITALIZED_KEY2=value2
alowercase.key=value3
另一个lowercase.key=value4
morelowercase.keys=value5
当我希望它出现时:
alowercase.key=value3
另一个lowercase.key=value4
CAPITALIZED_KEY1=值1
CAPITALIZED_KEY2=值2
morelowercase.keys=value5
【问题讨论】:
-
我不确定我是否理解您的问题。您能否简要说明正在发生的事情与您期望发生的事情?
-
请写出你得到的输出和想要的输出。
标签: java treemap properties-file