今天是:
设为首页 收藏本站 联系站长

◆你现在的位置是:首页 >> 程序开发 >> asp.net >> 正文
站内搜索:

 

串行化与反串行化【并行化】

2008-03-28 阅读: 出处: 作者: 编辑: 
 

应用程序常常需要在硬盘上存储数据,而逐段构建文本和数据文件不是最方便的方式。
有时最好以对象的形式存储数据。

● System.Runtime.Serialization.Formatters.Binary:这个命名空间包含了BinaryFormatter类,它能把对象串行化为二进制数据,把二进制数据串行化为对象。

● System.Runtime.Serialization.Formatters.Soap:这个命名空间包含了SoapFormatter类,它能把对象串行化为SOAP格式的XML数据,把SOAP格式的XML数据串行化为对象。

下面是一个实例,通过这个实例,我们可以就可以很清晰的认识到串行化和并行化的具体处理。

  1using System;
  2using System.Data;
  3using System.Runtime.Serialization;
  4using System.Runtime.Serialization.Formatters.Binary;
  5using System.IO;
  6using System.Text;
  7using System.Collections.Generic;
  8
  9/**//// <summary>
 10/// Summary description for Teacher
 11/// </summary>
 12[Serializable]//加上这个才能串行化
 13public class Teacher
 14{
 15    /**//// <summary>
 16    /// 教师ID
 17    /// </summary>
 18    public string ID;
 19    /**//// <summary>
 20    /// 教师姓名
 21    /// </summary>
 22    public string Name;
 23    /**//// <summary>
 24    /// 初始化
 25    /// </summary>
 26    public Teacher()
 27    {
 28        /**////
 29    }
 30    /**//// <summary>
 31    /// 构造函数
 32    /// </summary>
 33    /// <param name="id"></param>
 34    /// <param name="name"></param>
 35    public Teacher(string id, string name)
 36    {
 37        this.ID = id;
 38        this.Name = name;
 39    }
 40    /**//// <summary>
 41    /// 串行化对象,保存为文件
 42    /// </summary>
 43    /// <param name="nObject"></param>
 44    public void serializeObject(Teacher nTeacher)
 45    {      
 46        try
 47        {
 48            //BinaryFormatter把对象串行化为二进制数据,把二进制数据串行化为对象
 49            IFormatter formatter = new BinaryFormatter();
 50            //FileStream fileStream = new FileStream(@"d:\teacher22.txt", FileMode.Create,FileAccess.Write);
 51            FileStream fileStream = File.Create(@"d:\data.dat");
 52            formatter.Serialize(fileStream, nTeacher);
 53            fileStream.Close();
 54        }
 55        catch(Exception ex)
 56        {
 57            throw ex;
 58        }
 59        finally
 60        {
 61        }
 62    }
 63    /**//// <summary>
 64    /// 反串行化||并行化
 65    /// </summar
 66    /// <param name="str"></param>
 67    /// <returns></returns>
 68    public Teacher deserializeObject()
 69    { 
 70        try
 71        {
 72            BinaryFormatter derializer=new BinaryFormatter();
 73            Stream stream = new FileStream(@"d:\data.dat", FileMode.Open, FileAccess.Read, FileShare.Read);
 74
 75            //FileStream nFile = new FileStream(@"d:\teacher22.txt", FileMode.Open, FileAccess.Read, FileShare.Read);
 76            long coutn = stream.Length;
 77            Teacher nTeacher = (Teacher)derializer.Deserialize(stream);
 78            return nTeacher;
 79        }
 80        catch (Exception ex)
 81        {
 82            throw ex; 
 83            return null;
 84        }
 85 
 86    }
 87    /**//// <summary>
 88    /// 串行化对象
 89    /// </summary>
 90    /// <param name="nObject"></param>
 91    public void serializeObjects(object nObject)
 92    {
 93        FileStream fileStream = new FileStream("d:\path.xml",FileMode.Create);
 94        IFormatter serializer = new BinaryFormatter();
 95        serializer.Serialize(fileStream, nObject);
 96    }
 97    /**//// <summary>
 98    /// 反串行化---并行化
 99    /// </summary>
100    /// <param name="str"></param>
101    /// <returns></returns>
102    public object deserializeObjects(string strPath)
103    {
104        FileStream filestream = new FileStream(@strPath,FileMode.Open);
105        IFormatter derializer = new BinaryFormatter();
106        object nObject=(object)derializer.Deserialize(filestream);
107        return nObject;
108    }     
109}
110

上一条新闻:
下一条新闻:

【郑重声明】渐飞IT人阵地刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何投资或其他建议。转载需经渐飞IT人阵地同意并注明出处。本网站有部分文章是由网友自由上传。对于此类文章本站仅提供交流平台,不为其版权负责。如果您发现本网站上有侵犯您的知识产权的文章,请联系我们。
相关资讯
进入渐飞IT人阵地
姓名: 发言时务必尊重网上道德与相关法律法规
 

热点推荐排行榜

网站模板欣赏

最新软件下载