Ini4j存储方法更改注释字符



我想更改一个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();
    }
}

是否有办法改变默认的注释字符?

显然,即使ini4j可以读取;#的注释,当您必须将它们写入ini文件时,它也不会保存这些注释。

如果您检查ini4j项目的AbstractFormatter类,您可以看到唯一的注释操作符在写入时是#,如果您有权访问源代码,您可以使用自定义注释操作符更改它,并且应该工作。

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

对于空行,它们只是美学。同样,如果您可以访问源代码,您可以自己编辑它(注释这一行和这一行?),但我想如果您只是在此库生成后重新格式化您的ini文件并删除所有空行会更容易。

相关内容

  • 没有找到相关文章

最新更新