有时候我们希望把类的实例保存下来,以便以后的时候用。一个直观的方法就是StreamWriter把类写成一行,用\t分隔开每个属性,然后用StreamReader读出来。

但是这样太麻烦,代码行数较多,而且必须事先知道属性在行中的对应位置。这时候如果采用类序列化的方式保存就使得代码很简单:

假如你有一个类,在它的上面加上[Serializable]属性就可以了,表示这个类是可以序列化的

[Serializable]
public class People
{
public string Name { get; set; }
public int Age { get; set; }
}

然后采用如下代码将类的实例序列化到文件中

//序列化
FileStream fs = new FileStream(@"D:\Program\CSharp\NGramTest\NGramTest\serializePeople.dat", FileMode.Create);
People p = new People() { Name = "Haocheng Wu", Age = 24 }; BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, p);
fs.Close();

这样就能够上面的那个文件就保存了这个类的实例,如果想要读出来,就可以用

//反序列化
fs = new FileStream(@"D:\Program\CSharp\NGramTest\NGramTest\serializePeople.dat", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
People p = bf.Deserialize(fs) as People;

运用同样的方法,也可以把一个类的List完全序列化到文件中

//序列化List
FileStream fs = new FileStream(@"D:\Program\CSharp\NGramTest\NGramTest\serializePeople.dat", FileMode.Create);
BinaryFormatter bf = new BinaryFormatter(); List<People> ps = new List<People>();
ps.Add(new People() { Name = "Haocheng Wu", Age = 24 });
ps.Add(new People() { Name = "James Wu", Age = 23 }); bf.Serialize(fs, ps);
fs.Close();

读出来的方法也是一样的:

//反序列化List
fs = new FileStream(@"D:\Program\CSharp\NGramTest\NGramTest\serializePeople.dat", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
List<People> ps = bf.Deserialize(fs) as List<People>;

序列化可以做很多事情,这里仅仅举了两个简单的例子,很容易可以举一反三.

路径也可以使用Server.MapPath("~/.........../serializePeople.dat");

GOOD LUCK

最新文章

  1. 将SQL SERVER数据库改成MySql
  2. Chrome的Postman的使用
  3. [IOS ] - INFO
  4. LVS负载均衡中arp_ignore和arp_annonuce参数配置的含义
  5. Linq序列间的操作
  6. HDU 3374 String Problem
  7. [BZOJ]4755: [Jsoi2016]扭动的回文串
  8. Odoo的模块和应用程序的区别和使用
  9. java接口自动化基础知识(二)
  10. 全文搜索引擎——Solr
  11. Confluence 6 跟踪你安装中的自定义修改
  12. [js]js代码执行顺序/全局&amp;私有变量/作用域链/闭包
  13. Ubuntu 18.04拨号上网及校园网开启IPV6
  14. python调用 sshpass
  15. 获取元素的最终background-color
  16. 自定义视图(SpringMVC)
  17. iOS 在tableview的侧滑事件里执行tableView.selectRow无效的解决办法
  18. 201621123001 《Java程序设计》第12周学习总结
  19. UITableView性能的优化()
  20. ORACEL 创建表空间

热门文章

  1. 【第四章】MySQL数据库的基本操作:数据库、表的创建插入查看
  2. Python实现个性化推荐二
  3. 《机器学习实战》笔记——决策树(ID3)
  4. [C++] OOP - Access Control and Class Scope
  5. PCB各层介绍及AD软件画PCB时的规则
  6. Thunder团队第三周 - Scrum会议3
  7. 20172330 2017-2018-1 《Java程序设计》第三周学习总结
  8. 全排列 next_permutation() 函数的用法
  9. xpath获取块元素下&lt;br&gt;下的信息
  10. MAC搭建 PHP 环境