FileStream文件操作

发布时间:2024年01月08日

文件操作

序列化是将对象转换为可存储或传输的格式的过程。在.NET Framework中,序列化可以将对象转换为XML、二进制或其他格式,以便在网络上传输或存储在文件系统中。

在.NET Framework中,有几种序列化方式可供选择,包括二进制序列化、XML序列化和JSON序列化。以下是.NET Framework中常用的序列化类:
BinaryFormatter:将对象序列化为二进制格式。
XmlSerializer:将对象序列化为XML格式。
DataContractSerializer:将对象序列化为XML格式,并支持对数据进行版本控制。
JsonSerializer:将对象序列化为JSON格式。

序列化一般需要两个步骤:

  • 将一个对象序列化为相应格式的流(如二进制流、XML流等)。
  • 将序列化后的流写入到文件或通过网络传输给另一个应用程序。

我们来创建一个winform窗体,拖出下图示例的控件?

在这里插入图片描述

不使用序列化存

 private void button4_Click(object sender, EventArgs e) {
   //封装数据(数据一条一条的存储,这不属于面向对象编程的思想)
   Student student = new Student() {
     Name = this.name.Text.Trim(),
     Sex = this.sex.Text.Trim(),
     Age = this.age.Text.Trim(),
     Brith = Convert.ToDateTime(this.dtpBirth.Text)
   };
   //执行本地存储
   FileStream fs = new FileStream(@"D:\WinForms\文件操作(序列化)\学生信息.txt", FileMode.OpenOrCreate);
   StreamWriter sw = new StreamWriter(fs);
   sw.WriteLine(student.Name);
   sw.WriteLine(student.Age);
   sw.WriteLine(student.Sex);
   sw.WriteLine(student.Brith);
   sw.Close();
   fs.Close();
   MessageBox.Show("存储学生信息成功");
 }

不使用序列化取

private void button3_Click(object sender, EventArgs e) {
   FileStream fs = new FileStream(@"D:\WinForms\文件操作(序列化)\学生信息.txt", FileMode.OpenOrCreate);
   StreamReader sr = new StreamReader(fs);
   //一行一行读
   Student student = new Student() {
     Name = sr.ReadLine(),
     Age = sr.ReadLine(),
     Sex = sr.ReadLine(),
     Brith = Convert.ToDateTime(sr.ReadLine())
   };
   sr.Close();
   fs.Close();
   //显示
   MessageBox.Show($"{student.Name}:{student.Age}:{student.Sex}:{student.Brith}");
 }

使用序列化存

 private void button1_Click(object sender, EventArgs e) {
   Student student = new Student() {
     Name = this.name.Text.Trim(),
     Sex = this.sex.Text.Trim(),
     Age = this.age.Text.Trim(),
     Brith = Convert.ToDateTime(this.dtpBirth.Text)
   };
   FileStream fs = new FileStream(@"D:\WinForms\文件操作(序列化)\学生信息2.txt", FileMode.OpenOrCreate);
   //创建二进制格式化器
   BinaryFormatter bf = new BinaryFormatter();
   //调用序列化方法
   bf.Serialize(fs, student);
   //关闭流
   fs.Close();
   MessageBox.Show("存储学生成功");
 }

使用序列化取

private void button2_Click(object sender, EventArgs e) {
   FileStream fs = new FileStream(@"D:\WinForms\文件操作(序列化)\学生信息2.txt", FileMode.OpenOrCreate);
   //创建二进制格式化器
   BinaryFormatter bf = new BinaryFormatter();
   Student student = bf.Deserialize(fs) as Student;
   //关闭流
   MessageBox.Show($"{student.Name}:{student.Age}:{student.Sex}:{student.Brith}");
 }
文章来源:https://blog.csdn.net/qq_51810680/article/details/135465636
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。