如何使用java操作ini格式的配置文件

有些时候,可能会需要你通过程序读取、操作、修改、写入ini格式的配置文件,作为一个java程序员,我们应该怎么去操作呢?

ini

先看看.ini格式的文件是什么样子的:

[base]
name=jack
age=20
# 注释
[user] # 也是注释
username=AAA

其实这种格式的配置文件不是特别常见,扩展名也不一定就是.ini,有时候还可能叫做.config。当然了,扩展名这种东西,其内容取决于创建这个文件的人。

从我个人角度来讲,其实如果把这种格式的文件简单的抽象一下,他是跟properties十分类似的:

base.name=jack
base.age=20
user.username=AAA

mini-ini

mini-ini是一个java编写的ini配置文件读写库,它可以对上述那种格式的文件进行读写、操作,也可以直接转化为Properties进行操作。
此项目的项目地址是:(github) https://github.com/ForteScarlet/mini-ini
(gitee) https://gitee.com/ForteScarlet/mini-ini

这个项目是刚刚出现的,还没有什么star,如果你觉得它不错,请务必给作者的仓库点个star以表示支持与鼓励~

废话不多说,简单讲讲这个库怎么用。

导入项目

Maven

<!-- https://mvnrepository.com/artifact/love.forte/mini-ini -->
<dependency>
    <groupId>love.forte</groupId>
    <artifactId>mini-ini</artifactId>
    <version>1.0.0</version>
</dependency>

Gradle

// https://mvnrepository.com/artifact/love.forte/mini-ini
compile group: 'love.forte', name: 'mini-ini', version: '1.0.0'

Jar

该库没有什么额外依赖,你可以前往上面说的github或者gitee中的releases中下载他的jar包。

使用

注: mini-ini有较为完整的readme文档,你可以尝试直接前往他的github(英文)或者gitee(中文)查看文档。不过看英文的话需要注意,他文档的英文基本都是Google翻译出来的。
下面我写的demo示例代码也全部来自github的文档。

// 得到输入流
InputStream iniInput = Demo1.class.getClassLoader().getResourceAsStream("test.ini");

// 通过默认的bufferedIniReader类读取ini文件
IniReader ir = new BufferedIniReader();
Ini ini = ir.read(iniInput);

// 打印展示
System.out.println(ini);

// 转化为properties文件并展示
ini.toProperties().forEach((k, v) -> {
    System.out.println(k + "=" + v);
});

 // Create an IniBuilder and
IniBuilder b = new IniBuilder()
        .plusComment("this is a test ini")
        .skipLine(2)
        .plusSection("sec1", "this is a section")
        .plusProperty("key1", "value")
        .plusProperty("key2", "value")
        .plusProperty("key3", "value")
        .plusProperty("key4", "value")
        .plusProperty("key5", "value")
        .plusProperty("key6", "value")
        .plusSection("sec2")
        .plusProperty("key1", "value")
        .plusProperty("key2", "value")
        .plusProperty("key3", "value")
        .plusProperty("key4", "value")
        .plusProperty("key5", "value")
        .plusProperty("key6", "value")
;

// Build ini
final Ini ini = b.build();

// show
System.out.println(ini);

// Write to file
ini.write(Paths.get("F:\\test3.ini"), true);

自定义

上述的读写是库默认提供的读写方式,但是有时候可能无法满足需求(例如在默认读取写入情况下,key-value的后面不允许出现注释),这时候你可以通过库中所提供的接口来实现自己的解析器,甚至还可以增加一些其他的元素。

至于如何自定义、提供了什么接口,你可以直接去看github或gitee的文档,这里不再做过多赘述。

结束

很简单不是吗?至少我觉得操作起来是很方便的,如果你觉得这个库还可以,不妨试一试,并且给作者点个star表示一下~ 大家都是程序员,何不相互鼓励一下呢?

当然,如果你有更好的想法、更好的库推荐,欢迎互相分享,如果有什么讲得不对的地方,敬请谅解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章