对象保存序列化与反序列化学习

在这里插入图片描述

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ObjectStateSave
{
public partial class FrmMain : Form
{

    public FrmMain()
    {
        InitializeComponent();
    }

    private void btnSave_Click(object sender, EventArgs e)
    {


        // 第一种方法


        //    //封装数据
        //    Student student = new Student()
        //    {
        //        Name = this.txtName.Text.Trim(),
        //        Age = Convert.ToInt32(this.txtAge.Text.Trim()),
        //        Gender = this.txtGender.Text.Trim(),
        //        Birthdaty=Convert.ToDateTime(this.txtBirthday.Text.Trim())
        //    };
        //    //保存到文件里面

        //    FileStream fs = new FileStream("student.obj", FileMode.Create);
        //    StreamWriter sw = new StreamWriter(fs);

        //    //一行一行写入
        //    sw.WriteLine(student.Name);
        //    sw.WriteLine(student.Age);
        //    sw.WriteLine(student.Gender);
        //    sw.WriteLine(student.Birthdaty);

        //    //关闭写入器 文件流
        //    sw.Close();
        //    fs.Close();
        //    MessageBox.Show("保存成功", "消息提示");



        // 第二种方法
        //封装数据
        StudentService studentService = new StudentService()
        {
            Name = this.txtName.Text.Trim(),
            Age = Convert.ToInt32(this.txtAge.Text.Trim()),
            Gender = this.txtGender.Text.Trim(),
            Birthdaty = Convert.ToDateTime(this.txtBirthday.Text.Trim())
        };
        //传入数据
         studentService.studentServiceWrite(studentService);
        MessageBox.Show("保存成功", "消息提示");






    }

    private void btnRead_Click(object sender, EventArgs e)
    {
        //第一种方法
        //FileStream fs = new FileStream("student.obj", FileMode.Open);
        //StreamReader sr = new StreamReader(fs);
        一行一行读取
        //Student student = new Student()
        //{
        //    Name = sr.ReadLine(),
        //    Age = Convert.ToInt32(sr.ReadLine()),
        //    Gender = sr.ReadLine(),
        //    Birthdaty=Convert.ToDateTime(sr.ReadLine())
        //};
        关闭读取器  文件流
        //sr.Close();
        //fs.Close();

        显示数据

        //this.txtName.Text = student.Name;
        //this.txtAge.Text = student.Age.ToString();
        //this.txtGender.Text = student.Gender;
        //this.txtBirthday.Text = student.Birthdaty.ToShortDateString();
        //MessageBox.Show("读取成功", "提示");


        //第二种方法
        //StudentService studentService = new StudentService();
        读取数据
        //studentService.studentServiceRead(studentService);

        //this.txtName.Text = studentService.Name;
        //this.txtAge.Text = studentService.Age.ToString();
        //this.txtGender.Text = studentService.Gender;
        //this.txtBirthday.Text = studentService.Birthdaty.ToShortDateString();


        //第三种方法
        StudentService studentService = new StudentService();
        //读取数据
        studentService=studentService.studentServiceRead();
        this.txtName.Text = studentService.Name;
        this.txtAge.Text = studentService.Age.ToString();
        this.txtGender.Text = studentService.Gender;
        this.txtBirthday.Text = studentService.Birthdaty.ToShortDateString();

    }


}

}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ObjectStateSave
{
public class Student
{
public string Name { get; set; }
public string Gender { get; set; }
public int Age { get; set; }
public DateTime Birthdaty { get; set; }

}

}

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//序列化引用空间
using System.Runtime.Serialization.Formatters.Binary;

namespace ObjectStateSave
{
[Serializable]
//对象可序列化标记
public class StudentService
{
public string Name { get; set; }
public string Gender { get; set; }
public int Age { get; set; }
public DateTime Birthdaty { get; set; }

    public void studentServiceWrite(StudentService studentService)
    {
        //第一种方法
        文件流 写入器
        //FileStream fs = new FileStream("studentSave.obj",FileMode.Create);
        //StreamWriter sw = new StreamWriter(fs);
        写入
        //sw.WriteLine(studentService.Name);
        //sw.WriteLine(studentService.Age);
        //sw.WriteLine(studentService.Gender);
        //sw.WriteLine(studentService.Birthdaty);
        关闭 写入器  文件流
        //sw.Close();
        //fs.Close();

        //第二种方法 利用序列化
        //创建文件流
        FileStream fs = new FileStream("studentSave.stu", FileMode.Create);
        //创建二进制格式器
        BinaryFormatter formatter = new BinaryFormatter();
        //调用序列化方法
        formatter.Serialize(fs, studentService);
        //关闭文件流
        fs.Close();

    }

    public StudentService studentServiceRead(StudentService studentService)
    {
        //第一种方法
        //文件流 读取流

        FileStream fs = new FileStream("studentSave.obj", FileMode.Open);
        StreamReader sr = new StreamReader(fs);
        //读取
        Name = sr.ReadLine();
        Age = Convert.ToInt32(sr.ReadLine());
        Gender = sr.ReadLine();
        Birthdaty = Convert.ToDateTime(sr.ReadLine());
        //关闭 读取器 文件流
        sr.Close();
        fs.Close();
        return studentService;
    }

    //第二种方法 调用反序列化
    public StudentService studentServiceRead()
    {


        //创建文件流
        FileStream fs = new FileStream("studentSave.stu", FileMode.Open);

        //创建二进制格式器
        BinaryFormatter formatter = new BinaryFormatter();

        //调用反序列方法
        StudentService studentService = (StudentService)formatter.Deserialize(fs);
        //关闭文件流
        fs.Close();
        return studentService;
    }






}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值