/*****************序列化与反序列化***************
* 好文:http://www.cnblogs.com/chjw8016/archive/2008/02/23/1078204.html
* 1.把对象转换为字节序列的过程称为对象的序列化。
* 2.把字节序列恢复为对象的过程称为对象的反序列化。
* 3.最简单的方法是使用 Serializable 属性对类进行标记
* 4.IFormatter提供序列化的接口
************************************************/
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
///
/// MyObject 的摘要说明
///
[Serializable]
public class MyObject
{
public int n1 = 0;
public int n2 = 0;
public string str = null;
public MyObject()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
}
Default.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//FuncSerialize();
FuncDeserialize();
}
///
/// 序列化,把对象序列化为一个文件
///
private void FuncSerialize()
{
MyObject obj = new MyObject();
obj.n1 = 1;
obj.n2 = 24;
obj.str = "字符串";
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(@"c:\MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, obj);
stream.Close();
}
///
/// 反序列化,把文件化为一个对象
///
private void FuncDeserialize()
{
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(@"c:\MyFile.bin", FileMode.Open,
FileAccess.Read, FileShare.Read);
MyObject obj = (MyObject)formatter.Deserialize(stream);
stream.Close();
this.Title = obj.str;
}
}
原文:https://www.cnblogs.com/bruce1992/p/15152648.html