【问题标题】:How to get rid of spaces when using the ini.store() method to write into ini files?使用 ini.store() 方法写入 ini 文件时如何去掉空格?
【发布时间】:2018-09-21 22:52:05
【问题描述】:

我正在使用 Java API ini4j 来解析 ini 文件。我的原始 .ini 文件具有以下键值格式:

[section]
key=value

= 字符周围没有空格。

但是在使用ini.store()方法将更改保存到文件后(其中ini是引用我的.ini文件的Ini对象),.ini文件中的内容变成了

[section]
key = value

在 = 字符周围插入额外的空格。我不确定我是否正确使用了store() 方法。有没有办法摆脱这些空间?

---- 更新----

根据这个answer,我在我的代码中插入了以下几行:

Config config = new Config();
config.setStrictOperator(true);
ini.setConfig(config);

空格被删除。但是我对分号有一个新问题:

# before
[bashful]
weight = 45.7
height = 98.8
age = 67
homePage = http://snowwhite.tale/~bashful
homeDir = /home/bashful

# after
[bashful]
weight=45.7
height=98.8
age=67
homePage=http\\\://snowwhite.tale/~bashful
homeDir=/home/bashful

【问题讨论】:

标签: java ini ini4j


【解决方案1】:

终于解决了问题。发布我自己的解决方案以供将来参考:

要去掉=前后的空格,需要使用:

Config config = ini.getConfig(); // instead of Config config = new Config()  
config.setStrictOperator(true);
ini.setConfig(config); 

确保您使用的是 Wini,而不是 Ini。如果您使用 Ini 和 config.setStrictOperator(true),问题是您会看到在一些特殊字符之前插入了额外的反斜杠,例如 :、" 等。简单的解决方法是将 Ini 更改为 Wini:

Wini ini = new Wini(new File(filename));

【讨论】:

    【解决方案2】:

    在 Linux 上使用 Ini4j 时可以将 escape 设置为 false 来解决它:

    Config.getGlobal().setEscape(false);
    Config.getGlobal().setStrictOperator(true);
    Ini ini=new Ini(yourFile);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      • 2014-01-31
      • 2022-12-20
      • 1970-01-01
      • 2011-08-07
      • 2013-01-01
      相关资源
      最近更新 更多