控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

什么是C#序列化/反序列化

作者:不详 出处:IT专家网 2010年02月03日 阅读:

using System;
    using System.Collections.Generic; using System.Text; using System.Runtime.Serialization.Formatters.Binary; using System.IO; using System.IO.Compression; using System.Windows.Forms;
    namespace Vjsdn_Tester
    {
    public class TestZipObject
    {
    /// <summary>
    ///测试简单序列化/反序列化对象
    /// </summary>
    public void Test()
    {
    SerilizabledObject obj = new SerilizabledObject();
    byte[] bs = ZipObject.CompressionObject(obj); object o = ZipObject.DecompressionObject(bs); //还原,ok MessageBox.Show((o as SerilizabledObject).getName());
    }
    /// <summary>
    /// 序列化对象,将对象写入文件,然后还原.
    /// </summary>
    public void TestReadWriteFile()
    {
    SerilizabledObject obj = new SerilizabledObject();
    byte[] bs = ZipObject.CompressionObject(obj);
    //将数组写入文件
    Stream writer = new FileStream("E:\\test.shape", FileMode.Create, FileAccess.Write, FileShare.Write); writer.Write(bs, 0, bs.Length); writer.Flush(); writer.Close();
    //读取文件,先写入数组,再从数组转换为对象.Easy! FileStream fs = File.Open("E:\\test.shape", FileMode.Open); byte[] bss = new byte[fs.Length]; int i = fs.Read(bss, 0, (int)fs.Length);
    object o = ZipObject.DecompressionObject(bss); //还原,ok MessageBox.Show((o as SerilizabledObject).getName());
    }
    }
    /// <summary>
    ///测试用对象
    /// </summary>
    [Serializable]
    public class SerilizabledObject
    {
    string id = "id001";
    string name = "www.vjsdn.com";
    public SerilizabledObject() { }
    public string getName()
    {
    return this.name;
    }
    }
    /// <summary>
    ///压缩解压object
    /// </summary>
    public class ZipObject
    {
    #region压缩解压object
    public static byte[] CompressionObject(object DataOriginal)
    {
    if (DataOriginal == null) return null;
    BinaryFormatter bFormatter = new BinaryFormatter();
    MemoryStream mStream = new MemoryStream();
    bFormatter.Serialize(mStream, DataOriginal); byte[] bytes = mStream.ToArray();
    MemoryStream oStream = new MemoryStream();
    DeflateStream zipStream = new DeflateStream(oStream, CompressionMode.Compress); zipStream.Write(bytes, 0, bytes.Length); zipStream.Flush(); zipStream.Close(); return oStream.ToArray();
    }
    public static object DecompressionObject(byte[] bytes)
    {
    if (bytes == null) return null;
    MemoryStream mStream = new MemoryStream(bytes);
    mStream.Seek(0, SeekOrigin.Begin); DeflateStream unZipStream = new DeflateStream(mStream, CompressionMode.Decompress, true);
    object dsResult = null;
    BinaryFormatter bFormatter = new BinaryFormatter();
    dsResult = (object)bFormatter.Deserialize(unZipStream);
    return dsResult;
    }
    #endregion
    }
    }

    测试代码:

  private void button7_Click(object sender, EventArgs e)
    {
    new TestZipObject().Test(); // 测试简单序列化/反序列化对象new TestZipObject().TestReadWriteFile(); // 序列化对象,将对象写入文件,然后还原.
    }

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统