You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ini4j的ini.store()写入INI文件时如何去除等号两侧空格?

解决ini4j store()方法自动在键值对中添加空格的问题

我之前也碰到过ini4j这个默认格式化的小坑,确实不符合咱们想要的原文件格式😅,不过通过自定义格式化器就能轻松解决,具体步骤如下:

1. 自定义IniFormatter子类

我们需要重写ini4j默认的格式化逻辑,让它输出不带空格的key=value格式:

import org.ini4j.Ini;
import org.ini4j.IniFormatter;
import java.io.Writer;
import java.io.IOException;

public class NoSpaceIniFormatter extends IniFormatter {
    @Override
    protected void format(Ini.Section section, String key, String value, Writer writer) throws IOException {
        // 直接输出无空格的键值对
        writer.write(key);
        writer.write('=');
        writer.write(value);
        writer.write(System.lineSeparator());
    }
}

这个子类继承了父类的大部分逻辑,只修改了键值对的输出规则,section的格式(比如[section])会保持和原文件一致。

2. 使用自定义格式化器保存文件

在调用store()方法时,不要用无参的重载,而是指定我们刚才写的NoSpaceIniFormatter:

import org.ini4j.Ini;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class Main {
    public static void main(String[] args) {
        try {
            Ini ini = new Ini(new File("config.ini"));
            
            // 这里做你的修改操作,比如修改某个键的值
            ini.getSection("section1").put("key1", "newValue");
            
            // 使用自定义格式化器保存
            try (Writer writer = new FileWriter("config.ini")) {
                ini.store(writer, new NoSpaceIniFormatter());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这样保存后的INI文件就会严格保持key=value的无空格格式,和原文件的格式一致了。

内容的提问来源于stack exchange,提问作者Peng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:56:48