拓展阅读
YAML-02-yml 配置文件 java 整合使用 yamlbeans + snakeyaml + jackson-dataformat-yaml
Toml 是什么?
TOML旨在成为一种极简的配置文件格式,其明显的语义使其易于阅读。
TOML的设计目标是能够明确地映射到哈希表。TOML应该易于解析成各种编程语言中的数据结构。
Q: toml 的官方学习资料及网址
TOML(Tom’s Obvious Minimal Language)的官方网站为:https://toml.io/
TOML的官方GitHub仓库地址为:https://github.com/toml-lang/toml
在这些官方资源上,你可以找到TOML语法的详细规范,学习资料,以及其他有关TOML的文档。
Q: 详细介绍一下 toml 配置文件格式
TOML(Tom’s Obvious Minimal Language)是一种易于阅读和编写的配置文件格式。
它的设计目标是提供一个简单的、直观的配置文件语法,以替代类似INI、JSON和YAML等格式。
TOML 支持各种数据类型(字符串、整数、浮点数、布尔值、日期时间等)和嵌套结构,使得它适用于配置文件、元数据、设置文件等场景。
以下是 TOML 配置文件的一些基本特性和语法规则:
基本语法:
- TOML 配置文件由键值对(key-value pairs)组成,每个键值对以等号(
=
)或者冒号(:
)分隔。 - 键值对之间可以使用换行符或者行尾的逗号(
,
)分隔。 - 注释以井号(
#
)开头,后面的内容将被视为注释,直到行尾。
数据类型:
TOML 支持以下基本数据类型:
- 字符串(String): 字符串可以用单引号或双引号括起来,例如
'hello'
或"world"
。 - 整数(Integer): 例如
42
。 - 浮点数(Float): 例如
3.14
。 - 布尔值(Boolean): 可以是
true
或false
。 - 日期时间(Datetime): 例如
2023-11-01T10:30:00Z
,表示UTC时间。
数据结构:
TOML 支持嵌套的数据结构:
- 表(Table): 使用方括号(
[]
)定义表,表可以包含键值对,也可以包含嵌套的表。[user] name = "Alice" age = 30 [user.address] city = "New York"
- 数组(Array): 使用方括号(
[]
)定义数组,数组元素可以是任意数据类型,也可以是嵌套的表或数组。hobbies = ["reading", "traveling", "swimming"]
多行字符串:
TOML 允许使用三个连续的单引号或双引号表示多行字符串,保留换行符和缩进。
description = '''
This is a multi-line
string in TOML.
It preserves newlines
and indentation.
'''
以上是 TOML 配置文件的基本语法和特性。
TOML 的设计目标是提供一种简单而直观的配置文件格式,使得用户可以轻松地阅读和编写配置信息。
java 入门整合
maven 引入
<dependency>
<groupId>com.moandjiezana.toml</groupId>
<artifactId>toml4j</artifactId>
<version>0.7.2</version>
</dependency>
文件的写
package com.github.houbb.toml.learn.demo;
import com.github.houbb.toml.learn.model.User;
import com.moandjiezana.toml.TomlWriter;
import java.io.FileWriter;
import java.io.IOException;
public class TOMLWriterExample {
public static void main(String[] args) {
// 创建一个User对象
User user = new User();
user.setName("Alice");
user.setAge(30);
user.setEmployed(true);
// 将User对象写入TOML文件
try (FileWriter writer = new FileWriter("toml4j_output.toml")) {
TomlWriter tomlWriter = new TomlWriter();
tomlWriter.write(user, writer);
System.out.println("TOML文件已生成。");
} catch (IOException e) {
e.printStackTrace();
}
}
}
生成的效果
name = "Alice"
age = 30
isEmployed = true
文件的读
package com.github.houbb.toml.learn.demo;
import com.moandjiezana.toml.Toml;
import java.io.File;
public class TOML4JReadExample {
public static void main(String[] args) {
// 从TOML文件中读取数据
Toml toml = new Toml().read(new File("example.toml"));
// 读取单个值
String name = toml.getString("user.name");
int age = toml.getLong("user.age").intValue();
boolean isEmployed = toml.getBoolean("user.isEmployed");
// 读取嵌套表的值
String city = toml.getString("user.address.city");
String zip = toml.getString("user.address.zip");
// 打印读取的数据
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("Employed: " + isEmployed);
System.out.println("City: " + city);
System.out.println("ZIP: " + zip);
}
}
对应的 example.toml
[user]
name = "Alice"
age = 30
isEmployed = true
[user.address]
city = "New York"
zip = "10001"
对应的结果:
Name: Alice
Age: 30
Employed: true
City: New York
ZIP: 10001
小结
toml 是一个对人类特别友好的语言,但是个人感觉可能还是没有 yaml 这么广泛。
更多学习
更多实时资讯,前沿技术,生活趣事。尽在【老马啸西风】
交流社群:[交流群信息](https://mp.weixin.qq.com/s/rkSvXxiiLGjl3S-ZOZCr0Q)