0

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

[section]
key=value

= 字符周围没有空格。

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

[section]
key = value

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

- - 更新 - -

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

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
4

2 回答 2

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));
于 2018-04-12T03:15:25.550 回答
0

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

Config.getGlobal().setEscape(false);
Config.getGlobal().setStrictOperator(true);
Ini ini=new Ini(yourFile);
于 2019-12-13T06:16:14.187 回答