记录:文件的读写
2013-09-10 15:23
323 查看
对象就是主体当前所关注的事物。类和结构实际上都是创建对象的模板,每个对象都包含数据,并提供处理和访问数据的方法。
当然,我们都希望所关注的事物存储的时间能久一些,我们在设计程序和运行程序的过程中,当运行程序的时候,对象就没了,那么我们怎么样才能使它存储得久一些?持久化就是可以将内存中的对象存储到可以永久保存的存储设备中(如磁盘,文件或流)的一种手段,通常需要持久化的都是实体的对象。我们对文件进行读写通常有三种方式:文件流读写、XML文档读写、序列化与反序列化,这三种读写方式各有千秋。。。。。。
文件流读写一般都是用StreamReader中的ReadLine()和SteamWriter中的WriteLine()来实现;
XML文档一般都是通过文档中的Load()方法来加载,还通过其中的一些类:XmlElenment、XmlAttribute、XmlNode等的方法来实现;
持久化主要是序列化合反序列化:
序列化过程
1.将实体类设置为可以序列化。
2.创建实体类对象。
3.创建序列化工具对象。
4.创建文件流(应该要写入)
5.序列化。
6.清理序列化过程中的资源。
反序列化过程
1.创建序列化工具对象。
2.创建文件流(应该要读取)
3.反序列化。
4.清理序列化过程中的资源。
BinaryFormatter: 使用二进制序列化方式序列化的内容,只能在.net平台中读取和写入。
Xml序列化方式可以在多个技术平台之间共享数据。
Xml序列化方式要求,类必须是公开类。
下面来看一个简单的例子:
上面就是持久化的整个过程。
P.S: as用来做类型转换(as前面用Object,后面用引用类型)
is用来判断对象是否是某种类型
typeof用来获得某个对象的类的Type对象。
位运算符:& | ^ ~ >> <<
当然,我们都希望所关注的事物存储的时间能久一些,我们在设计程序和运行程序的过程中,当运行程序的时候,对象就没了,那么我们怎么样才能使它存储得久一些?持久化就是可以将内存中的对象存储到可以永久保存的存储设备中(如磁盘,文件或流)的一种手段,通常需要持久化的都是实体的对象。我们对文件进行读写通常有三种方式:文件流读写、XML文档读写、序列化与反序列化,这三种读写方式各有千秋。。。。。。
文件流读写一般都是用StreamReader中的ReadLine()和SteamWriter中的WriteLine()来实现;
XML文档一般都是通过文档中的Load()方法来加载,还通过其中的一些类:XmlElenment、XmlAttribute、XmlNode等的方法来实现;
持久化主要是序列化合反序列化:
序列化过程
1.将实体类设置为可以序列化。
2.创建实体类对象。
3.创建序列化工具对象。
4.创建文件流(应该要写入)
5.序列化。
6.清理序列化过程中的资源。
反序列化过程
1.创建序列化工具对象。
2.创建文件流(应该要读取)
3.反序列化。
4.清理序列化过程中的资源。
BinaryFormatter: 使用二进制序列化方式序列化的内容,只能在.net平台中读取和写入。
Xml序列化方式可以在多个技术平台之间共享数据。
Xml序列化方式要求,类必须是公开类。
下面来看一个简单的例子:
namespace prjIOtest6 { [Serializable]//将实体类设置为可以序列化 class Card:IComparable<Card> { string name; public string Name {*****:第一步:这是必须的,设置好了以后才能开始序列化和反序列化。
Card card = new Card();//创建一个对象 card.Name = "dongjing"; card.Phone = "15191143820"; card.Qq = "1234564556"; card.Email = "yddongjingjing@163.com"; card.Address = "陕西咸阳武功"; BinaryFormatter bf = new BinaryFormatter();//创建序列化工具对象 FileStream fs = new FileStream("test.dat", FileMode.Create);//创建流,用来写入 bf.Serialize(fs, card);//序列化 fs.Flush(); fs.Close();第二步:序列化过程
BinaryFormatter bf = new BinaryFormatter(); FileStream fs = new FileStream("test.dat", FileMode.Open);//创建流,用来读取 object obj = bf.Deserialize(fs);//反序列化 Card card = (Card)obj;//将object类型强制转化为Card类型 Console.WriteLine(card); fs.Close();第三步:反序列化
上面就是持久化的整个过程。
P.S: as用来做类型转换(as前面用Object,后面用引用类型)
is用来判断对象是否是某种类型
typeof用来获得某个对象的类的Type对象。
位运算符:& | ^ ~ >> <<
相关文章推荐
- python 文件操作、数据库读写、爬虫功能块 记录
- 学习记录-Qt文件的读写和删除等操作
- 记录java 流(实现简单的文件读写)
- !!无须定义配置文件中的每个变量的读写操作,以下代码遍历界面中各个c#控件,自动记录其文本,作为配置文件保存
- Python 文件读写操作记录
- IOS基础知识记录六(读写文件)
- CStdioFile类逐行读写日志记录文件
- 基于java:读写一个英文的txt文件,记录单词个数,并输出十个出现最多的单词及出现的个数;
- C语言常用文件读写函数记录
- php脚本读写文件发送短信记录结果
- DataNode上执行文件读写时报java.io.IOException: Bad connect ack with firstBadLink as 192.168.X.X错误解决记录
- C标准库:以记录为单位的IO函数(文件读写)
- 记录一个python的configobj读写ini配置文件的链接
- iOS学习爬坑记录3:plist文件的读写,以及向NSMutableArray中写入NSDictionary元素失败
- 使用POI读写word docx文件(笔记记录)
- [学习记录]接口的封装与设计之文件读写
- cocos2dx 2进制文件读写问题记录
- I/O 简单文本文件读写改 对象 ArrayList保存文件的记录
- Java之文件的随机访问和读写RandomAccessFile
- 利用fstream 读写二进制文件