如何使用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表示一下~ 大家都是程序員,何不相互鼓勵一下呢?

當然,如果你有更好的想法、更好的庫推薦,歡迎互相分享,如果有什麼講得不對的地方,敬請諒解。

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