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表示,该实例也不维护顺序。所以订单在这个过程中很早就丢失了,后来又丢失了好几次。
| 归档时间: |
|
| 查看次数: |
664 次 |
| 最近记录: |