4

ini ファイルのセクションにあるキーのエントリを変更したいと考えています。私はini4jライブラリを使用しています。というわけで以下のコードを書きました。エントリを変更できますが、望ましくない他の変更もあります。

  • の代わり ";" コメント行を示す「#」
  • セクションとコメントの間の空白行の追加

では、どうすれば解決できますか?

これは私が期待したものです:

[section1]
key1=40
key2=30
[section2]
key1=10
key2=20
;section3
[section3]
key1=10
key2=20

これは編集後のファイルです。

[section1]
key1=40
key2=30

[section2]
key1=10
key2=20

#section3

[section3]
key1=10
key2=20

私のコード:

public static void setEntry(String filePath, String fileName, String sectionName, String keyName, String entry)
        throws IOException {
    String path = filePath.concat(fileName);
    FileInputStream inputStream = null;
    try {
        inputStream = new FileInputStream(path);
        Ini ini = new Ini(inputStream);
        ini.getConfig().setStrictOperator(true);
        Section section = ini.get(sectionName);
        if (section != null) {
            if (section.containsKey(keyName)) {
                section.put(keyName, entry);
            }
            else {
                section.add(keyName, entry);
            }
        }
        else {
            section = ini.add(sectionName);
            section.add(keyName, entry);
        }

        File iniFile = new File(path);
        ini.store(iniFile);
    }
    catch (IOException e) {
        e.printStackTrace();
    }
    finally {
        inputStream.close();
    }
}

デフォルトのコメント文字を変更する方法はありますか?

4

1 に答える 1

0

どうやら、ini4j が;and#でコメントを読み取ることができる場合でも、それらを ini ファイルに書き込む必要がある場合、これは保存されません。

AbstractFormatterini4j プロジェクトのクラスを確認すると、書き込み時に重要な唯一のコメント演算子が であることがわかり#ます。ソース コードにアクセスできる場合は、カスタム コメント演算子で変更でき、機能するはずです。

abstract class AbstractFormatter implements HandlerBase
{
    private static final char OPERATOR = '=';
    private static final char COMMENT = '#';    // <--- change this to ';'
    ...

空行に関しては、それらは単なる美学です。繰り返しますが、ソースコードにアクセスできる場合は、自分で編集できます (この行とこの行にコメントを付けますか?) が、このライブラリによって生成された後に ini ファイルを再フォーマットし、空のすべてを削除する方が簡単だと思います。行。

于 2016-03-08T18:36:50.803 に答える