1. 程式人生 > >使用IO進行Yaml檔案的讀寫

使用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;
	}
}

相關推薦

使用IO進行Yaml檔案

前言 可能是自己對yaml檔案不夠了解吧,想做一個yaml檔案的讀寫,在網上搜到的例項都是使用yaml.dump(),我也這麼跟著做,但使用該方法的yaml檔案始終在開頭有兩個!!,導致沒辦法使用yaml.load()進行讀取.最後看到一個yaml.dumpAs

python yaml檔案

  import yaml yaml_dict={"sss":"111","ddd":"222"} with open("a.yaml", "w") as f: yaml.safe_dump(yaml_dict,f,encoding='utf-8', allow_unicode=Tr

java的IO流和檔案

IO流 IO流分類 按資料流向分:輸入流、輸出流 按資料型別分:位元組流(x xInputStream 讀,xxOutputStream寫)、字元流(xxRead讀,xxWrite寫) 如果資料所在的檔案通過windows自帶的記事本開啟並能

opencv學習(十七)之XML和YAML檔案操作

可能大部分人到現在接觸的XML和YAML檔案很少,等以後訓練人臉模型進行人臉識別的時候用的就多了。現在先了解一下這兩種檔案型別。 XML:Extensible Markup Language,可擴充套件標記語言,標準通用語言的子集,是一種用於標記電子檔案使其具

利用標準C語言庫函式進行文字檔案

    利用C語言進行檔案操作的方法有多種。其中包括在UNIX系統環境下利用系統介面進行檔案操作;在windows系統下可以利用windows系統下可以利用fopen_s等庫函式的安全版本進行檔案操作。但是用的最多的就是利用標準庫函式進行檔案操作。本文主要介紹利用C標準庫函

使用Python進行二進位制檔案

總的感覺,python本身並沒有對二進位制進行支援,不過提供了一個模組來彌補,就是struct模組。 python沒有二進位制型別,但可以儲存二進位制型別的資料,就是用string字串型別來儲存二進位制資料,這也沒關係,因為string是以1個位元組為單位的。 import

對彩色YUV視訊進行二進位制檔案時候的注意事項

開啟並讀寫YUV彩色視訊時,在寫yuv時候,開始用的是fopen(“.......”,"r+");結果視訊yuv檔案,有很厲害的抖動和顏色的偏移。後來改成如下,即fopen(“.......”,"rb");但是在寫的時候使用的fopen(yuvImageName,"r+")

Python檔案&IO處理技巧(1): 、重定向、間隔符、路徑、存在性與檔案列表

1. 文字資料的讀寫 open() & write() : rt模式的重新整理模式 當我們需要讀寫各種不同編碼的文字資料(如ASCII,UTF-8或UTF-16編碼等), 可以直接使用帶rt模式的open()內建函式。如果需要將文字內容寫入到一個檔案中,就要使用帶有 w

Python IO-檔案

檔案File操作流程: 1.開啟檔案:建立程式與檔案的聯絡         語法:file_obj = open(filename, mode)       filename:                       原字串 r’c:\temp\text.txt

Python檔案&IO處理技巧(1): 、重定向、間隔符、路徑、存在性與檔案列表

1. 文字資料的讀寫 open() & write() : rt模式的重新整理模式 當我們需要讀寫各種不同編碼的文字資料(如ASCII,UTF-8或UTF-16編碼等), 可以直接使用帶rt模式的open()內建函式。如果需要將文字內容寫入到一個檔案中,就要使用帶有

Python基礎筆記_Day13_Python檔案IO、異常、自定義異常

Day13_Python檔案讀寫IO、異常、自定義異常 13.01_Python語言基礎(檔案概述)(熟練) 13.02_Python語言基礎(檔案開啟關閉)(掌握) 13.03_Python語言基礎(檔案的讀寫)(掌握) 13.04_Python語言基礎(製作檔案的備份)(掌握) 13

java中使用檔案輸入流和檔案輸出流進行檔案的用例!

package com.cfkyit.io; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutp

ruby檔案的好文章 ruby way之IO之一

  http://simohayha.javaeye.com/blog/153398 1 開啟和關閉一個檔案 類方法File.new 開啟一個檔案,並將它例項化為一個File物件,他的第一個引數是檔名. 可選的第二個引數叫做 mode string(這個也是從c得來的)

python pandas IO tools 之read_csv檔案引數詳解

python pandas IO tools 之csv檔案讀寫 讀取csv檔案:pd.read_csv(),寫入csv檔案:pd.to_csv() pandas還可以讀取一下檔案: read_csv, read_excel, read_hdf,

Python之IO程式設計——檔案、StringIO/BytesIO、操作檔案和目錄、序列化

What is your name? Eric We'll remember you when you come back, Eric!否則,輸出將如下:Welcome back, Eric!    1.3重構    你經常會遇到這樣的情況:程式碼能夠正確地執行,但可做進一步的改進——將程式碼劃分為一系列完成

Hadoop程式設計學習(四):使用FileSystem類進行檔案及檢視檔案資訊

http://www.cnblogs.com/beanmoon/archive/2012/12/11/2813235.html 在這一節我們要深入瞭解Hadoop的FileSystem類——這是與與hadoop的檔案系統互動的重要介面。雖然我們只是著重於HDFS的實現,但

Java檔案IO/NIO及效能比較總結

幹Java這麼久,一直在做WEB相關的專案,一些基礎類差不多都已經忘記。經常想得撿起,但總是因為一些原因,不能如願。 其實不是沒有時間,只是有些時候疲於總結,今得空,下定決心將丟掉的都給撿起來。 檔案讀寫是一個在專案中經常遇到的工作,有些時候是因為維護,有些時候是新功能開發

從哪些方面對Android檔案進行測試?

一、檔案讀寫基本介紹 檔案的讀寫操作在實際的手機開發中非常常見,比如記錄資料以及App的版本號、作為某些開關觸發過的標記、甚至儲存書籤等,由於目前的主流智慧手機作業系統(如Android,iOS)都是基於Linux/Unix進行開發的,故檔案的讀寫也有著相較於一般Windows系統更為複雜的特性,比如擁

PGM格式影象檔案

        private int mWidth;         private int mLength;         private int mColor;

Java 之 檔案及效能比較總結

Java 之 檔案讀寫及效能比較總結 2014年05月12日 17:56:49 閱讀數:21765  幹Java這麼久,一直在做WEB相關的專案,一些基礎類差不多都已經忘記。經常想得撿起,但總是因為一些原因,不能如願。 其實不是沒有時間,只是有些時候疲於總結,今得空,下定決心