前言
可能是自己对yaml文件不够了解吧,想做一个yaml文件的读写,在网上搜到的实例都是使用yaml.dump(),我也这么跟着做,但使用该方法的yaml文件始终在开头有两个!!,导致没办法使用yaml.load()进行读取.最后看到一个yaml.dumpAsMap()的方法,灵光一现,干脆自己写一个得了.以下是实现代码,就是一些简单的IO;
代码
除了基础的jdk外,还引入了两个包,分别是:fastjson-1.2.2.jar,snakeyaml-1.17.jar
package com.xiangpeng.IM.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.UUID;
import org.junit.jupiter.api.Test;
import org.yaml.snakeyaml.Yaml;
import com.alibaba.fastjson.JSON;
public class YamlTest {
@Test
public void yamlWrite() throws IOException {
// 准备写入对象
User user = new User();
user.setUid(UUID.randomUUID().toString().replace("-", ""));
user.setName("彰显忠");
user.setSex("男");
user.setAge(37);
// 实例化一个Yaml,并准备写入数据
Yaml yaml = new Yaml();
String dumpAsMap = yaml.dumpAsMap(user);
// 使用流写入yaml文件
FileWriter fileWriter = new FileWriter(YamlTest.class.getClassLoader().getResource("").getPath()+"../config/UserInfo.yml");
PrintWriter writer = new PrintWriter(fileWriter);
writer.write(dumpAsMap);
// 收尾
fileWriter.close();
writer.close();
}
@Test
public void yamlRead() throws FileNotFoundException {
Yaml yaml = new Yaml();
File file = new File(YamlTest.class.getClassLoader().getResource("").getPath()+"../config/UserInfo.yml");
User user = JSON.parseObject(JSON.toJSONString(yaml.load(new FileInputStream(file))), User.class);
System.out.println(user);
}
}
class User {
private String uid;
private String name;
private String sex;
private int age;
@Override
public String toString() {
return "User [uid=" + uid + ", name=" + name + ", sex=" + sex + ", age=" + age + "]";
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}