如何以定义的顺序编写Java属性?

Ste*_*eod 28 java properties-file

我正在使用java.util.Properties的store(Writer,String)方法来存储属性.在生成的文本文件中,属性以偶然的顺序存储.

这就是我正在做的事情:

Properties properties = createProperties();
properties.store(new FileWriter(file), null);
Run Code Online (Sandbox Code Playgroud)

如何确保按字母顺序或按属性添加顺序写出属性?

我希望解决方案比"手动创建属性文件"更简单.

Ste*_*eod 57

根据"新白痴"的建议,这按字母顺序排列.

Properties tmp = new Properties() {
    @Override
    public synchronized Enumeration<Object> keys() {
        return Collections.enumeration(new TreeSet<Object>(super.keySet()));
    }
};
tmp.putAll(properties);
tmp.store(new FileWriter(file), null);
Run Code Online (Sandbox Code Playgroud)

  • 它会先排序大写然后小写 (2认同)
  • 我不认为这仍然有效?`keys()` 中的断点不会触发。我通过重写“entrySet()”方法解决了这个问题。使用 super.entrySet() ,转换为列表,对列表排序,转换回 Set 并返回。 (2认同)

小智 10

有关完整实现的信息,请参阅https://github.com/etiennestuder/java-ordered-properties,该实现允许以明确定义的顺序读/写属性文件.

OrderedProperties properties = new OrderedProperties();
properties.load(new FileInputStream(new File("~/some.properties")));
Run Code Online (Sandbox Code Playgroud)