C#知识|文件与目录操作:对象的创建、保存、读取

哈喽,你好啊,我是雷工!

面向对象编程的特点就是一切皆对象,操作的也是对象,本节学习文件与目录操作中,对象的保存;

以下为学习笔记。

01 对象的特点

①:对象运行在内存中,程序关闭时,这些对象也会被CLR的垃圾回收机制销毁。

②:程序再次运行时,对象会重新创建运行,无法保留上次对象的运行状态。

③:如果想要程序运行时能继续上次运行时对象的状态,那么应用程序就需要将对象的各个属性值保存到磁盘文件中,这样再次运行时直接从磁盘文件中获取设置对象的各个属性值即可,常用的方法就是使用文本文件保存对象的各个属性值。

02 使用文件保存对象状态

2.1、实现功能

①:把用户信息封装为对象的属性,保存在文本中。

②:把文本的信息还原成对象的属性,然后显示出来。

2.2、效果演示

①写入文本文件

②从文本文件中读取

03 实现步骤

3.1、引入命名空间

cs 复制代码
using System.IO;

3.2、写入文本文件

实现思路:

①:封装数据;

②:创建文件流;

③:创建写入器;

④:以流的方式将封装的数据一行一行写入;

⑤:关闭写入器;

⑥:关闭文件流;

实现代码:

cs 复制代码
//写入文本文件

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、从文本文件中读取

实现思路:

①:创建文件流;

②:创建读取器;

③:一行一行的以流的形式将数据读取到对象;

④:关闭读取器;

⑤:关闭文件流;

⑥:显示对象中的数据;

实现代码:

cs 复制代码
//从文本文件中读取

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 后记

以上为文件与目录操作中对象的形式写入与读取的实现,但这种方式如果文件不是通过本程序写入的,在读取时容易出现顺序上的错误,下面练习针对该问题的解决办法。

相关推荐
tang777893 分钟前
爬虫如何绕过绕过“5秒盾”Cloudflare:从浏览器指纹模拟到Rust求解之不完全指南
开发语言·爬虫·rust·cloudflare
Yuer20257 分钟前
什么是 Rust 语境下的“量化算子”——一个工程对象的最小定义
开发语言·后端·rust·edca os·可控ai
hqwest10 分钟前
码上通QT实战26--系统设置01-系统设置布局
开发语言·qt·qss·qt基础控件·qt布局控件·qt表格控件
薛定谔的猫198211 分钟前
llama-index Embedding 落地到 RAG 系统
开发语言·人工智能·python·llama-index
短剑重铸之日19 分钟前
《7天学会Redis》Day 5 - Redis Cluster集群架构
数据库·redis·后端·缓存·架构·cluster
007php00719 分钟前
mySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据
数据库·redis·git·mysql·面试·职场和发展·php
lkbhua莱克瓦2422 分钟前
进阶-存储过程3-存储函数
java·数据库·sql·mysql·数据库优化·视图
jghhh011 小时前
传递对准MATLAB仿真程序
开发语言·matlab
老邓计算机毕设1 小时前
SSM心理健康系统84459(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·心理健康系统·在线咨询