使用IO进行Yaml文件的读写

前言

可能是自己对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;
	}
}

猜你喜欢

转载自blog.csdn.net/DDKii/article/details/83826155