Rey*_*esh 0 java properties-file
我有一个这样的 label.properties 文件:
text1:firstname
text2:middlename
text3:lastname
text4:username
Run Code Online (Sandbox Code Playgroud)
我使用此代码读取属性文件
package test;
import java.util.Enumeration;
import java.util.ResourceBundle;
public class labelclass {
public static String read(int n) {
ResourceBundle rb = ResourceBundle.getBundle("myfolder.label");
Enumeration <String> keys = rb.getKeys();
while (keys.hasMoreElements()) {
for(int i=1; i<=n; i++){
String key = keys.nextElement();
}
String value = rb.getString(key);
return value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我打电话read(2)
,它应该返回middlename
。但它返回它返回firstname
的顺序是这样的:
text2:middlename
text1:firstname
text4:username
text3:lastname
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
.properties
文件由ResourceBundle加载到HashSet 中,它不保留顺序。这您收到Enumeration对象只是集合上的迭代器。
我查看了 ListResourceBundle类,不幸的是它也返回了一个不保持顺序的集合上的 Enumeration 对象。
编辑:.properties
将在PropertyResourceBundle 中使用InputStream加载并存储在Properties的实例中,该实例在内部由Hashtable表示,该实例也不维护顺序。所以订单在这个过程中很早就丢失了,后来又丢失了好几次。