简介
INI 文件是一种无固定标准格式的配置文件。它以简单的文字与简单的结构组成,常常使用在 Windows 操作系统上,许多程序也会采用 INI 文件做为配置文件使用。Windows 操作系统后来以注册表的形式取代了 INI 文件。INI 文件的命名来源于英文"初始(Initial)"的前三个字符,正与它的用途 ------ 初始化程序相对应。
特性
- 🚀 简洁且归一化的接口
- 🚀 支持字符串、整数、长整数、浮点、布尔
- 💪 整数溢出检查
- 🎧 支持多行
- 🌏 输出 DataModel(待实现)
路线

架构
架构图:

- section 解析
- 左值 key 解析
- 右值 value 解析
- 输出 DataModel
源码目录
bash
.
├── doc
│ ├── assets
│ ├── cjcov
│ ├── design.md
│ └── feature_api.md
├── README.md
├── src
│ ├── IniDataModel.cj
│ ├── IniParser.cj
│ └── IniValue.cj
└── test
├── HLT
├── LLT
└── UT
doc
存放库的设计文档、提案、库的使用文档、LLT 用例覆盖率src
库源码目录test
存放测试用例,包括 HLT 用例、LLT 用例和 UT 用例
接口说明
详情见API
使用说明
编译
cjpm build
功能示例
ini文件:
ini
[section1]
aval=false
bval=-123456789
cval=10
dval=1111.111111
eval=-123456.7890
fval="hello world"
[section2]
aval=false
bval=-123456789
cval=10
dval=1111.111111
eval=-123456.7890
fval="hello world"
[section3]
aval=false
bval=-123456789
cval=10
dval=1111.111111
eval=-123456.7890
fval="hello world"
DD一下: 欢迎大家关注公众号<程序猿百晓生>,可以了解到以下知识点。
erlang
`欢迎大家关注公众号<程序猿百晓生>,可以了解到以下知识点。`
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案)
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......
parse 接口调用:
将下面测试文件main.cj放到src下。
css
import ini4cj.*
main(): Unit {
let parser:IniParser = IniParser("test_multiple_sections_001.ini")
let ini:IniFile = parser.parse()
println(ini.toString())
}
运行结果:
ini
[section1]
aval=false
bval=-123456789
cval=10
dval=1111.111111
eval=-123456.7890
fval="hello world"
[section2]
aval=false
bval=-123456789
cval=10
dval=1111.111111
eval=-123456.7890
fval="hello world"
[section3]
aval=false
bval=-123456789
cval=10
dval=1111.111111
eval=-123456.7890
fval="hello world"
jval=9111111111111111110
获取 value 接口调用:
将下面测试文件main.cj放到src下。
ini
import ini4cj.*
main(): Unit {
let parser:IniParser = IniParser("test_multiple_sections_001.ini")
let ini:IniFile = parser.parse()
let aval: IniValue = ini.get("section1").get("aval")
let bval: IniValue = ini.get("section1").get("bval")
let cval: IniValue = ini.get("section1").get("cval")
let dval: IniValue = ini.get("section1").get("dval")
let eval: IniValue = ini.get("section1").get("eval")
let fval: IniValue = ini.get("section1").get("fval")
let a: Bool = parser.getBoolean(aval)
let b: Int32 = parser.getInt(bval)
let c: Int32 = parser.getInt(cval)
let d: Float64 = parser.getDouble(dval)
let e: Float64 = parser.getDouble(eval)
let f: String = parser.getString(fval)
println("a=${a}")
println("b=${b}")
println("c=${c}")
println("d=${d}")
println("e=${e}")
println("f=${f}")
}
运行结果:
ini
a=false
b=-123456789
c=10
d=1111.111111
e=-123456.789000
f="hello world"
约束与限制
在下述版本验证通过:
yaml
Cangjie Version: 0.53.4