对象存取和序列化对象存取

对象存取和序列化对象存取

 

 

//实体类对象

复制代码
using System;
using System.Collections.Generic;
using System.Text;

namespace TextFile
{
    [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;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

//引入命名空间
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace TextFile
{
    public partial class FrmFile : Form
    {
        public FrmFile()
        {
            InitializeComponent();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            //封装对象信息
            Student objStu = new Student()
            {
                Name = this.txtName.Text.Trim(),
                Age = Convert.ToInt16(this.txtAge.Text.Trim()),
                Gender = this.txtGender.Text.Trim(),
                Birthday = Convert.ToDateTime(this.txtBirthday.Text.Trim())
            };
            //保存到文本文件
            FileStream fs = new FileStream("C:\\objStu.obj", FileMode.Create);
            StreamWriter sw = new StreamWriter(fs);
            //一行一行写入文本
            sw.WriteLine(objStu.Name);
            sw.WriteLine(objStu.Age);
            sw.WriteLine(objStu.Gender);
            sw.WriteLine(objStu.Birthday.ToShortDateString());
            //关闭文件流和写入器
            sw.Close();
            fs.Close();
        }

        private void btnRead_Click(object sender, EventArgs e)
        {
            FileStream fs = new FileStream("C:\\objStu.obj", FileMode.Open);
            StreamReader sr = new StreamReader(fs);
            //一行一行读取
            Student objStu = new Student()
            {
                Name = sr.ReadLine(),
                Age = Convert.ToInt16(sr.ReadLine()),
                Gender = sr.ReadLine(),
                Birthday = Convert.ToDateTime(sr.ReadLine())
            };
            sr.Close();
            fs.Close();
            this.txtName.Text = objStu.Name;
            this.txtAge.Text = objStu.Age.ToString();
            this.txtGender.Text = objStu.Gender;
            this.txtBirthday.Text = objStu.Birthday.ToShortDateString();
        }

        private void btnSerialize_Click(object sender, EventArgs e)
        {
            //封装对象信息
            Student objStu = new Student()
            {
                Name = this.txtName.Text.Trim(),
                Age = Convert.ToInt16(this.txtAge.Text.Trim()),
                Gender = this.txtGender.Text.Trim(),
                Birthday = Convert.ToDateTime(this.txtBirthday.Text.Trim())
            };
            //【1】创建文件流
            FileStream fs = new FileStream("C:\\objStu.obj", FileMode.Create);
            //【2】创建二进制格式化器
            BinaryFormatter formatter = new BinaryFormatter();
            //【3】调用序列化方法
            formatter.Serialize(fs, objStu);
            //【4】关闭文件流
            fs.Close();
        }

        private void btnDeserialize_Click(object sender, EventArgs e)
        {
            //【1】创建文件流
            FileStream fs = new FileStream("C:\\objStu.obj", FileMode.Open);
            //【2】创建二进制格式化器
            BinaryFormatter formatter = new BinaryFormatter();
            //【3】调用序列化方法
            Student objStu = (Student)formatter.Deserialize(fs);
            //【4】关闭文件流
            fs.Close();
            //显示对象属性
            this.txtName.Text = objStu.Name;
            this.txtAge.Text = objStu.Age.ToString();
            this.txtGender.Text = objStu.Gender;
            this.txtBirthday.Text = objStu.Birthday.ToShortDateString();
        } 

    }
}
复制代码

 

posted @   funiyi816  阅读(41)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示