哈喽,你好啊,我是雷工!
面向对象编程的特点就是一切皆对象,操作的也是对象,本节学习文件与目录操作中,对象的保存;
以下为学习笔记。
01 对象的特点
①:对象运行在内存中,程序关闭时,这些对象也会被CLR的垃圾回收机制销毁。
②:程序再次运行时,对象会重新创建运行,无法保留上次对象的运行状态。
③:如果想要程序运行时能继续上次运行时对象的状态,那么应用程序就需要将对象的各个属性值保存到磁盘文件中,这样再次运行时直接从磁盘文件中获取设置对象的各个属性值即可,常用的方法就是使用文本文件保存对象的各个属性值。
02 使用文件保存对象状态
2.1、实现功能
①:把用户信息封装为对象的属性,保存在文本中。
②:把文本的信息还原成对象的属性,然后显示出来。
2.2、效果演示
①写入文本文件
②从文本文件中读取
03 实现步骤
3.1、引入命名空间
using System.IO;
3.2、写入文本文件
实现思路:
①:封装数据;
②:创建文件流;
③:创建写入器;
④:以流的方式将封装的数据一行一行写入;
⑤:关闭写入器;
⑥:关闭文件流;
实现代码:
//写入文本文件
private void btnWriteTxt_Click(object sender, EventArgs e)
{
Account objAccount = new Account()
{
Name = this.txtName.Text.Trim(),
Owner=this.txtOwner.Text.Trim(),
Duration=Convert.ToInt32(this.txtDuration.Text.Trim()),
DataRed=Convert.ToDateTime(this.txtDataRed.Text.Trim())
};
//保存到文件里面
FileStream fs = new FileStream("objAccount.obj", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(objAccount.Name);
sw.WriteLine(objAccount.Owner);
sw.WriteLine(objAccount.Duration);
sw.WriteLine(objAccount.DataRed);
sw.Close();
fs.Close();
}
3.3、从文本文件中读取
实现思路:
①:创建文件流;
②:创建读取器;
③:一行一行的以流的形式将数据读取到对象;
④:关闭读取器;
⑤:关闭文件流;
⑥:显示对象中的数据;
实现代码:
//从文本文件中读取
private void btnReadtxt_Click(object sender, EventArgs e)
{
FileStream fs = new FileStream("objAccount.obj", FileMode.Open);
StreamReader sr = new StreamReader(fs);
Account objAccount = new Account()
{
Name = sr.ReadLine(),
Owner = sr.ReadLine(),
Duration = Convert.ToInt32(sr.ReadLine()),
DataRed = Convert.ToDateTime(sr.ReadLine())
};
sr.Close();
fs.Close();
this.txtName.Text = objAccount.Name;
this.txtOwner.Text = objAccount.Owner;
this.txtDuration.Text = objAccount.Duration.ToString();
this.txtDataRed.Text = objAccount.DataRed.ToShortDateString();
}
04 后记
以上为文件与目录操作中对象的形式写入与读取的实现,但这种方式如果文件不是通过本程序写入的,在读取时容易出现顺序上的错误,下面练习针对该问题的解决办法。