2011-08-30 10 views
1

これらのインスタンスのいずれかが与えられた場合:org.apache.commons.configuration.PropertiesConfiguration私はコメントを書いています。どうやって?どのように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 
} 

このアプローチの問題の1つは、PropertiesConfigurationドキュメントがレイアウトについて少し漠然としていることです。これは、コメントがダミー行の上に表示されると明示的には言わないので、PropertiesConfigurationは後続の呼び出しでファイルを自由に並べ替えるというリスクがあるようです。私はプロパティ行の順序が保持されているという保証も見ていないので、コメント(およびダミー行)は常にコメントが適用されるプロパティの上にあることを保証できません:プロパティlabel0。もちろん、私はここでは少し編集的である。ただし、レイアウトは変更されていないことが保証されていないとドキュメントでは説明しています。 うまくいけば、誰かがダミーラインなしで何かを思いつくことができ、Java docやウェブサイトは、それがコメントしようとしているプロパティに対するコメントの位置を保証することを望みます。編集:ファイルに既に存在するプロパティの1つにコメントを付加するのではなく、なぜダミーのプロパティを作成するのか疑問に思うかもしれません。理由は、プロパティと変更のブロック(新しいもの、または順序の切り替え)を導入するコメントが必要なためです。私はメンテナンスの問題を作りたくありません。私のコメントは、「これはデータマイニングの結果のセクションです」または「これはスケジュールのセクションです」と言って、これを再訪する必要はありません。

答えて

0

コメントは次のとおりですか?

# This is comment 
0

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

EDIT PropertiesConfiguration JavaDoc文書:[OK]を、あなたがコードからコメントを書きたいです。

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.PropertiesWriterとその writeCommentメソッドを使用することができます

要約:PropertiesConfigurationは、探している機能を提供していません。

+0

Java WriterオブジェクトをPropertiesWriterに提供する方法がわかりません。私は既存のPropertiesConfigurationからJava Writerを取得する方法を知らない。 – H2ONaCl

+0

あなたのソリューションは、内部クラスを使用するように思われます。私はすでに外部クラスを使用するコードがたくさんあります。外部クラスからFileWriterを取得して、コメントだけに内部クラスを使用できるようにする方法があれば良いでしょう。それから、残りのコードは変更せずに残すことができます。 – H2ONaCl

+0

@broiyan残念なことに私の解決策は、外部の 'PropertiesConfiguration'クラスの使用法に適合しません。私は、不動産にコメントをつける可能性は全く見当たりません。申し訳ありません、私は外です! – FrVaBe

関連する問題