这是一个快速而肮脏的方法:
String propFile = "/path/to/file"; Properties props = new Properties(); /* Set some properties here */ Properties tmp = new Properties() { @Override public Set
以下是警告:
tmp属性(匿名子类)不符合属性的约定.
例如,如果你得到它keySet
并试图从中删除一个元素,则会引发异常.所以,不要让这个子类的实例逃脱!在上面的代码片段中,您永远不会将其传递给另一个对象或将其返回给具有合法期望它履行属性合同的调用者,因此它是安全的.
Properties.storeToXML的实现可能会更改,导致它忽略keySet方法.
例如,未来版本或OpenJDK可以使用替代keys()
方法.这就是为什么类应该始终记录它们的"自用"(Effective Java Item 15)的原因之一.但是,在这种情况下,最糟糕的情况是您的输出将恢复为未排序.Hashtable
keySet
请记住,属性存储方法会忽略任何"默认"条目.
这是为store Properties.store(OutputStream out, String comments)
和product生成排序输出的方法Properties.storeToXML(OutputStream os, String comment)
:
Properties props = new Properties() { @Override public SetkeySet(){ return Collections.unmodifiableSet(new TreeSet (super.keySet())); } @Override public synchronized Enumeration keys() { return Collections.enumeration(new TreeSet (super.keySet())); } }; props.put("B", "Should come second"); props.put("A", "Should come first"); props.storeToXML(new FileOutputStream(new File("sortedProps.xml")), null); props.store(new FileOutputStream(new File("sortedProps.properties")), null);