前言:
实现对象的保存、读取文本文件、二进制序列化和反序列化。通过这些实例,我们能够深入了解如何将对象的属性信息以不同的方式进行持久化,并在需要时再次还原,从而提高数据的可管理性和可维护性。
一、界面设计
二、代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
// 引入命名空间
using System.IO;
using System.Runtime.Serialization.Formatters.Binary; // 二进制序列化命名空间
namespace 对象的保存_序列化和反序列化
{
public partial class FrmFile : Form
{
public FrmFile()
{
InitializeComponent();
}
private void bitSavetxt_Click(object sender, EventArgs e)
{
// 封装数据
Cars objCars = new Cars()
{
Name = this.txtName.Text.Trim(),
Result = this.txtResult.Text.Trim(),
ID = Convert.ToInt16(this.txtID.Text.Trim()),
Manufacture = Convert.ToDateTime(this.txtManufacture.Text.Trim())
};
// 保存文本文件
FileStream fs = new FileStream("objCars.obj", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(objCars.Name);
sw.WriteLine(objCars.Manufacture);
sw.WriteLine(objCars.ID);
sw.WriteLine(objCars.Result);
sw.Close();
fs.Close();
}
private void btnReadtxt_Click(object sender, EventArgs e)
{
FileStream fs = new FileStream("objCars.obj", FileMode.Open);
StreamReader sr = new StreamReader(fs);
// 一行一行读取
Cars objCars = new Cars()
{
Name = sr.ReadLine(),
Manufacture = Convert.ToDateTime(sr.ReadLine()),
ID = Convert.ToInt16(sr.ReadLine()),
Result = sr.ReadLine()
};
this.txtName.Text=objCars.Name;
this.txtManufacture.Text = objCars.Manufacture.ToLongDateString();
this.txtID.Text = objCars.ID.ToString();
this.txtResult.Text = objCars.Result;
sr.Close();
fs.Close();
}
private void btnSerializable_Click(object sender, EventArgs e)
{
// 封装数据
Cars objCars = new Cars()
{
Name = this.txtName.Text.Trim(),
Result = this.txtResult.Text.Trim(),
ID = Convert.ToInt16(this.txtID.Text.Trim()),
Manufacture = Convert.ToDateTime(this.txtManufacture.Text.Trim())
};
// 1、创建文件流
FileStream fs = new FileStream("objCars.obj", FileMode.Create);
// 2、创建二进制格式化器
BinaryFormatter formatter = new BinaryFormatter();
// 3、调用序列化方法
formatter.Serialize(fs, objCars);
// 4、关闭文件流
fs.Close();
}
private void btnDeserializable_Click(object sender, EventArgs e)
{
// 1、创建文件流
FileStream fs = new FileStream("objCars.obj", FileMode.Open);
// 2、创建二进制格式化器
BinaryFormatter formatter = new BinaryFormatter();
// 3、调用反序列化方法
Cars objCars =(Cars)formatter.Deserialize(fs);
// 4、关闭文件流
fs.Close();
this.txtName.Text = objCars.Name;
this.txtManufacture.Text = objCars.Manufacture.ToLongDateString();
this.txtID.Text = objCars.ID.ToString();
this.txtResult.Text = objCars.Result;
}
}
}
三、源码文件
c#-对象的txt保存、序列化和反序列化 https://download.csdn.net/download/m0_55074196/88650292