如何在PropertiesConfiguration文件中写注释?

时间:2011-08-30 05:21:59

标签: configuration-files apache-commons

鉴于其中一个实例:org.apache.commons.configuration.PropertiesConfiguration我想写一个评论。怎么样?

pc = new PropertiesConfiguration();

writeComment("this is a comment about the stuff below"); // HOW DO I WRITE THIS?
pc.addProperty("label0", myString);
writeComment("end of the stuff that needed a comment.");

编辑:我有一个粗略的解决方案。希望它可以改进。


这是我能做的最好的事情。它在文件中留下了一条无关的行。

pc = new PropertiesConfiguration();
writeComment(pc, "The following needed a comment so this is a comment.");
pc.addProperty(label0, stuff0);
writeComment(pc, "End of the stuff that needed a comment.");

...
 private void writeComment(PropertiesConfiguration pc, String s)
 {
    String propertyName = String.format("%s%d", "comment", this.commentNumber++);

    pc.getLayout().setComment(propertyName, s + " (" + propertyName + ")");

    // make a dummy property 
    pc.addProperty(propertyName, "."); 
         // put in a dummy right-hand-side value so the = sign is not lonely 
 }

这种方法的一个问题是PropertiesConfiguration doc对布局有点模糊。它没有明确说明注释将出现在虚线上方,因此似乎存在PropertiesConfiguration可以在后续调用中自由重新排列文件的风险。我甚至没有看到保证属性行顺序被保留,所以我不能保证注释(和虚拟行)总是在注释适用的属性之上:property label0。当然,我在这里有点偏执。但是,文档确实说布局不保证不会被修改。 希望有人可以在没有虚拟线的情况下提出一些内容,并在评论相对于要评论的属性的评论位置上提供Java文档或网站保证。编辑:您可能想知道我为什么会这样做创建一个虚拟属性,而不是仅仅将注释附加到已存在于文件中的属性之一。原因是因为我想要一个注释来引入一个属性块和更改(新的,或顺序中的开关)是可能的。我不想创建维护问题。我的评论应该说“这是数据挖掘结果的部分”或“这是时间表的部分”,我永远不必重新审视这一点。

2 个答案:

答案 0 :(得分:0)

这样的评论?

# This is comment

答案 1 :(得分:0)

PropertiesConfiguration JavaDoc文档

 Blank lines and lines starting with character '#' or '!' are skipped. 

编辑:好的,你想从代码中写下评论。也许 - 如果您只需要编写属性文件 - 您可以使用PropertiesConfiguration.PropertiesWriter及其writeComment方法,如下所示:

FileWriter writer = new FileWriter("test.properties");
PropertiesWriter propWriter = new PropertiesWriter(writer, ';');

propWriter.writeComment("Example properties");
propWriter.writeProperty("prop1","foo");
propWriter.writeProperty("prop2", "bar");

propWriter.close();

属性文件如下所示:

# Example properties
prop1 = foo
prop2 = bar

<强>更新

总结:PropertiesConfiguration不提供您要查找的功能。