900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > C#对象序列化 反序列化 保存 读取 对象直接保存 读取

C#对象序列化 反序列化 保存 读取 对象直接保存 读取

时间:2023-09-07 06:57:52

相关推荐

C#对象序列化 反序列化 保存 读取 对象直接保存 读取

基于WindowForm应用程序C#语言通过实际案例实现将对象保存到文件及从已保存的文件中读取对象(直接保存与读取、通过序列化与反序列化方式进行对象保存与读取)

添加Student类:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace WF_Serialize{/// <summary>/// 学生类、对象/// </summary>[Serializable]//进行对象序列化与反系列话必须添加class Student{public string Name { get; set; } //属性public string Gender { get; set; }public int Age { get; set; }public DateTime Birthday{ get; set; }}}

主程序引入命名空间

// 引入必要的命名空间using System.IO; //数据流命名空间using System.Runtime.Serialization.Formatters.Binary;//序列化与反序列化命名空间

对象序列化反序列化保存与读取和对象直接保存与读取实现方法程序

using System;using System.Collections.Generic;using ponentModel;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 WF_Serialize{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void btnSave_Click(object sender, EventArgs e){//从控件中读取数据并封装成对象Student objStudent = new Student(){Name = this.txtName.Text.Trim(),Age = Convert.ToInt32(this.txtAge.Text.Trim()),Birthday = Convert.ToDateTime(this.txtDate.Text.Trim()),Gender = this.txtGender.Text.Trim()};//调用方法将对象保存到文本中SaveStudent(objStudent);}//对象到文本文件中的方法private void SaveStudent(Student objStudent){//保存对象到文本文件中FileStream fs = new FileStream("objStudent.obj", FileMode.Create); //创建写入器StreamWriter sw = new StreamWriter(fs);//逐行写入数据sw.WriteLine(objStudent.Name);sw.WriteLine(objStudent.Age);sw.WriteLine(objStudent.Birthday);sw.WriteLine(objStudent.Gender);sw.Close(); //关闭写入器fs.Close(); //关闭数据流}private void btnRead_Click(object sender, EventArgs e){//读取对象到窗体FileStream fs = new FileStream("objStudent.obj", FileMode.Open);StreamReader sr = new StreamReader(fs);//逐行读取文本数据,并封装成对象Student objStudent = new Student(){Name = sr.ReadLine(),Age = Convert.ToInt32(sr.ReadLine()),Birthday = Convert.ToDateTime(sr.ReadLine()),Gender = sr.ReadLine()};sr.Close(); fs.Close(); //关闭数据流//显示对象this.txtName.Text = objStudent.Name;this.txtGender.Text = objStudent.Gender;this.txtDate.Text = objStudent.Birthday.ToShortDateString();this.txtAge.Text = objStudent.Age.ToString();}private void btnSerialize_Click(object sender, EventArgs e){//从控件中读取数据并封装成对象Student objStudent = new Student(){Name = this.txtName.Text.Trim(),Age = Convert.ToInt32(this.txtAge.Text.Trim()),Birthday = Convert.ToDateTime(this.txtDate.Text.Trim()),Gender = this.txtGender.Text.Trim()};//保存对象到文本文件中(序列化)FileStream fs = new FileStream("objStudent1.obj", FileMode.Create);//创建二进制格式化器BinaryFormatter bf =new BinaryFormatter();//调用序列化方法bf.Serialize(fs, objStudent);//关闭数据流fs.Close(); }private void btnUnserialize_Click(object sender, EventArgs e){//读取对象到窗体FileStream fs = new FileStream("objStudent1.obj", FileMode.Open); BinaryFormatter bf = new BinaryFormatter();//通过反序列化还原对象Student objStudent=(Student)bf.Deserialize(fs);fs.Close();//显示对象this.txtName.Text = objStudent.Name;this.txtGender.Text = objStudent.Gender;this.txtDate.Text = objStudent.Birthday.ToShortDateString();this.txtAge.Text = objStudent.Age.ToString();}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。