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;
}
}
}