自己进行数据的“持久化操作”:

----- 数据持久化技术:程序还运行过程中,所有的“中间数据”(加工或处理过程中数据)都存放在内存中,但内存的特点是掉电后数据无法保存,所以需要有种技术能够将存放在内存中数据进行“永久保存”,这样的技术我们称为持久化技术。

以“文件”的方式对数据进行“持久化保存”:

方式一:直接将内存中的数据,搬运到磁盘文件中  ------ 二进制文件

方式二:将内存中的数据进行“逻辑转意”为字符,然后再写入到文件 ----- 文本文件

“文本文件”读写操作:

方式一:(五个步骤,使用FileStream、StreamReader[StreamWrite])

//1、创建 “文件流” 对象

FileStream fs = new FileStream(filePath, FileMode.Create);

//2、创建 “文件读写器”对象

StreamWriter sw = new StreamWriter(fs);

//3、读写操作

sw.Write(this.textBox1.Text);

//4、关闭“读写器”

sw.Close();

//5、关闭“文件流”

fs.Close();

方式二:使用  Using 简化代码(减少关闭的代码和步骤)

//1、创建 “文件流” 对象

using (FileStream fs = new FileStream(filePath, FileMode.Create))

{

//2、创建 “文件读写器”对象

using (StreamWriter sw = new StreamWriter(fs))

{

//3、读写操作

sw.Write(this.textBox1.Text);

}

}

方式三:直接使用StreamReader、StreamWrite

//1、创建 “文件读写器”对象

using (StreamWriter sw = new StreamWriter(“D:\学员资料.txt”))

{

//2、读写操作

sw.Write(this.textBox1.Text);

}

使用“文本文件”实现数据持久化,一来当数据庞大且关系复杂时,其转换为“文本”的过程繁琐容易出错,开发效率低!因此,我们可以尝试将“数据对象”整个的端到磁盘的文件中! ------ 使用二进制文件保存数据【序列化技术】

序列化操作步骤:

1、对“待处理”数据进行“预处理”:将类定义为“可序列化”【要求其所有的家族都是可序列化】

2、创建“序列化”操作对象:

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter

3、创建传输用“流”对象:

FileStream fs = new FileStream();

4、序列化操作

//创建 “流对象”  (文件流) --- 负责运输

using (FileStream fs = new FileStream(@"c:\mydata", FileMode.Open))

{

//创建 “序列化对象”        --- 负责对象【打包】

BinaryFormatter bf = new BinaryFormatter();

//bf.Serialize(fs, _stuList1);  序列化方法

_stuList2 = bf.Deserialize(fs) as List<Student>;  反序列化方法

}

[Serializable]  可序列化标识代码

小贴士:

文本文件读写,最容易出现的错误就是“乱码”:

乱码的出现,是因为您读取和写入时,所采用的“字符编码规则”不一致!

注意:

读取自己文件 --- 应该采用一致“编码规则”

读取第三方文件  ---- 应该采用与其对应“编码规则”,或者,直接使用本机的默认编码规则

【设置方式:直接设置到读写器上】

StreamReader sr = new StreamReader(fs,Encoding.Default);

StreamReader sr = new StreamReader(fs,Encoding.UTF8)

StreamReader sr = new StreamReader(fs,Encoding.GetEncoding("gb2312"))

深入.net(文件操作)的更多相关文章

  1. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

    .net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...

  2. 野路子出身PowerShell 文件操作实用功能

    本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...

  3. Node基础篇(文件操作)

    文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...

  4. 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)

    ========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...

  5. SQL Server附加数据库报错:无法打开物理文件,操作系统错误5

    问题描述:      附加数据时,提示无法打开物理文件,操作系统错误5.如下图: 问题原因:可能是文件访问权限方面的问题. 解决方案:找到数据库的mdf和ldf文件,赋予权限即可.如下图: 找到mdf ...

  6. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  7. Linux文件操作的主要接口API及相关细节

    操作系统API: 1.API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用,应用层程序通过调用API来调用操作系统中的各种功能,来干活 文件操作的一般步骤: 1.在linux系统 ...

  8. C语言的fopen函数(文件操作/读写)

    头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:    FILE * fopen(const char * path, c ...

  9. Python的文件操作

    文件操作,顾名思义,就是对磁盘上已经存在的文件进行各种操作,文本文件就是读和写. 1. 文件的操作流程 (1)打开文件,得到文件句柄并赋值给一个变量 (2)通过句柄对文件进行操作 (3)关闭文件 现有 ...

  10. python 文件操作(转)

    python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...

随机推荐

  1. 【Swift学习】Swift编程之旅---ARC(二十)

    Swift使用自动引用计数(ARC)来跟踪并管理应用使用的内存.大部分情况下,这意味着在Swift语言中,内存管理"仍然工作",不需要自己去考虑内存管理的事情.当实例不再被使用时, ...

  2. 如何解读SQL Server日志(3/3)

    如何查看被截断的日志 如果数据库做了日志备份操作,则日志会被截断,然后原来活动的VLF会被重用.使用sys.fn_dblog将会看不到任何被截断的日志.那如何查看日志备份中的日志呢?使用fn_dump ...

  3. Oracle10g在Win2008R2下因版本无法安装问题的解决

    次文章为转载的: 首先需要从官网下载Windows_vista版本的oracle10g,下载地址为:http://download.oracle.com/otn/nt/oracle10g/10203/ ...

  4. C#中方法的声明

    C#中方法的声明(四要素) 访问修饰符 :public,private(方法的默认访问修饰符) 返回值类型:void 和 非void 方法名称    : 规范是方法名称取动词,每个单词的首字母大写. ...

  5. canvas导出图片方法总结

    html代码 <canvas id="canvas" width="100" height="100" ></canvas ...

  6. java实现的排序(插入/希尔/归并)

    java实现三种简单的排序,以下是代码: /*插入排序*/ public static void insertionSort(int[] a) { int j; for(int p = 1; p &l ...

  7. WinPhone学习笔记(一)——页面导航与页面相关

    最近学一下Windows Phone(接下来简称“WinPhone”)的开发,在很久很久前稍探究一下WinPhone中对一些传感器的开发,那么现在就从头来学学WinPhone的开发.先从WinPhon ...

  8. dmesg 的时间戳处理

    dmesg_with_human_timestamps () { $(type -P dmesg) "$@" | perl -w -e 'use strict; my ($upti ...

  9. objective-c高德地图时时定位

    这篇随笔是对上一遍servlet接口的实现. 一.项目集成高德地图 应为我这个项目使用了cocopods这个第三方库管理工具,所以只需要很简单的步骤,就能将高德地图集成到项目中,如果你没使用过这工具, ...

  10. objective-c NSMutableAttributedString

    NSMutableAttributedString 是一个很强悍的富文本处理字符串,可以方便的实现一个字符串中某个字符的样式处理.我把我下面代码实现的功能步骤说一下:首先拼接两个字符串,然后给前前半部 ...