yaml简介
YAML是“YAML不是一种标记语言”的外语缩写
“YAML Ain't Markup Language”
反正就是一种标记语言呗,她不像xml那样繁琐,有那么多标签,他的格式比较简单,以数据为中心,侧重点是数据.
先来一个yaml格式的配置
repo:
GIT_ANDROID_ROOT: git/android/
REPO_MANIFEST_ADDR: ssh://gerrit.example.com:29418/git/android/platform/manifest
REPO_MANIFEST_BRANCH: master
REPO_MANIFEST_FILE: default.xml
REPO_MIRROR: /home/mirror
REPO_GROUP: ''
REPO_GROUP_AMSS: amss,common
REPO_GROUP_ANDROID: all,-amss
build:
ANDROID_TARGET_PRODUCT_LIST: civic
ANDROID_BUILD_VARIANT_LIST: user
ANDROID_TARGET_CARRIER_LIST: whole_netcom
ANDROID_BUILD_TYPE: release
ANDROID_EXTRA_BUILD_STEPS: null
ANDROID_EXTRA_BUILD_COMBINATION: civic,eng,fn,android:civic,userdebug,fn,android
ANNOUNCE_LIST: null
如何使用java来读取写入yaml文件
这里使用snakeyaml这个模块来解析写入
maven的依赖坐标是:
<!-- https://mvnrepository.com/artifact/org.yaml/snakeyaml -->
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.21</version>
</dependency>
读取是直接使用 yaml 对象中的load方法,会返回一个map对象的.然后遍历这个map得到自己想要的数据就可以了.
private Map parseYaml(Path cf) {
Yaml yaml = new Yaml();
try {
return yaml.load(new FileInputStream(cf.toFile()));
} catch (FileNotFoundException e) {
//e.printStackTrace();
}
return null;
}
当然,也可以定义一个实体类
然后是写入,直接调用yaml对象的一个dump方法,他是可以把一个map写入为yaml格式文件的
//我这个方法就是修改上面那个yaml文件的 build下面的某些字段的.
public void updateBuild(Path cf, Map<String, String> map) {
String secn = "build";
try {
DumperOptions dumperOptions = new DumperOptions();
dumperOptions.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
dumperOptions.setDefaultScalarStyle(DumperOpti