我使用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
答案 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);