使用ini.store()方法写入ini文件时如何摆脱空格?

时间:2018-04-11 22:48:48

标签: java ini ini4j

我使用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

2 个答案:

答案 0 :(得分:0)

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

要删除=之前和之后的空格,需要使用:

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));

答案 1 :(得分:0)

在Linux上使用Ini4j进行解析时,可以将转义设置为false:

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