`

C# 序列化对象及反序列化

阅读更多

 

public static void SaveByteData(string path,object data)
        {
            FileStream fs = null;
            try
            {
                
                fs = new FileStream(path, FileMode.OpenOrCreate);
                if (fs != null)
                {
                    var bytes = ZipObject.CompressionObject(data);
                    fs.Write(bytes, 0, bytes.Count());
                }
            }
            catch
            {
            }
            finally
            {
                fs.Close();
            }

        }

        public static object LoadByteData(string path)
        {
            FileStream fs = null;
            object result = null;
            try
            {
                fs = new FileStream(path, FileMode.Open);
                if (fs != null)
                {
                    int length = (int)fs.Length;
                    byte[] bytes = new byte[length];
                    fs.Read(bytes, 0, length);
                    result = ZipObject.DecompressionObject(bytes);

                }
            }
            catch
            {
            }
            finally
            {
                fs.Close();
            }
            return result;
        }
 
 
/// <summary>
    ///压缩解压object
    /// </summary>
    public class ZipObject
    {
        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;
        }
    }

 

分享到:
评论

相关推荐

    C#序列化与反序列化(包括复杂xml对象)

    在C#编程中,序列化和反序列化是两个关键的概念,它们主要用于对象状态的持久化和恢复。本文将深入探讨C#中的XML序列化和反序列化技术,包括如何将XML文档解析为对象,以及如何将对象转换回XML文档进行存储。我们将...

    C#对象序列化反序列化保存与读取和对象直接保存与读取

    本主题将深入探讨如何在Windows Forms(WF)环境中,利用C#语言进行对象的直接保存与读取,以及通过对象序列化和反序列化的方式实现对象的保存与恢复。 首先,我们来理解什么是对象的直接保存与读取。在C#中,可以...

    C#对象序列化与反序列化

    ### C#对象序列化与反序列化 #### 1. 对象序列化的介绍 ##### (1).NET支持对象序列化的几种方式 .NET框架提供了多种序列化机制,它们各自有不同的应用场景和特点。 - **二进制序列化**: - **定义**:二进制...

    C#对象三种形式的序列化和反序列化

    在C#编程中,序列化和反序列化是将对象的状态转换为可存储或传输的形式,然后恢复为原始对象的过程。这在数据持久化、网络通信以及跨应用程序域共享数据时非常有用。本主题将详细探讨C#中的三种序列化方式:二进制...

    C#序列化反序列化实例

    首先,C#序列化是将对象转换为字节流的过程,这使得数据可以被保存到磁盘、数据库,或者在网络上传输。C#提供了多种序列化方式,包括XML序列化、JSON序列化和二进制序列化。例如,使用`XmlSerializer`类可以将对象...

    C# 序列化反序列化

    在这个特定的场景中,我们看到的是一个利用C#进行序列化和反序列化的实践例子,用于在文本文件(如TXT)与List对象之间交换数据,最后展示在datagridview中。 1. **什么是序列化?** 序列化是将对象的状态转换为...

    C#序列化和反序列化案例.rar

    在这个“C#序列化和反序列化案例”中,我们可以通过提供的代码示例深入理解这两个概念。 首先,序列化是将对象的状态转换为可以存储或传输的数据格式的过程。在C#中,我们可以使用内置的System.Runtime....

    c#对象序列化和反序列化,压缩流

    在C#编程中,对象序列化和反序列化是至关重要的技术,它们允许我们将对象的状态转化为可存储或可传输的数据格式,例如XML、JSON或二进制,以便于保存、恢复或者在网络间传递。而“压缩流”则涉及到数据的压缩和解...

    C#和Java的序列化反序列化

    本篇文章将深入探讨C#和Java中的序列化与反序列化机制。 首先,我们要了解什么是序列化。序列化是指将对象的状态转化为可存储或可传输的数据格式的过程。这个过程通常将内存中的对象转换成字节流,以便保存到磁盘、...

    c#对象序列化与反序列化实例

    在C#编程中,对象序列化和反序列化是至关重要的技术,它们允许开发者将复杂的对象状态转换为可存储或可传输的数据格式,如XML、JSON或二进制流。对象序列化通常用于持久化数据、跨进程通信、网络传输等场景。下面...

    C#序列化,反序列化对象完整代码

    在C#编程中,序列化和反序列化是两个重要的概念,它们主要用于数据持久化、网络传输和跨进程通信等场景。序列化是将对象的状态转换为可存储或可传输的形式,而反序列化则是将这种形式的数据恢复为原来的对象状态。在...

    C#序列化和反序列化

    综上所述,"C#序列化和反序列化"这个主题涵盖了如何在C#程序中有效地管理和操作数据的各个方面。通过深入理解这些概念和实践,开发者可以更好地处理数据的保存和传输,提升应用程序的性能和功能。

    C#序列化与反序列化

    C#序列化是指将一个对象的实例转换为一组字节流,这通常用于保存对象的状态以便稍后恢复,或者在网络之间传输对象。C#提供了多种类型的序列化,包括XML序列化、二进制序列化、JSON序列化等。 1. XML序列化:使用...

    C#通过Socket发送Object对象,序列化,反序列化

    这是一个用C#写的Socket服务器和客户端,当然Socket服务器和客户端不是主要的(有兴趣的朋友可以参考下),主要的内容是介绍如何通过这种Socket方式发送Object对象。 作者博客 http://luyugao.com

    序列化和反序列化的封装类

    在编程领域,序列化和反序列化是两个关键的概念,特别是在数据存储、网络传输和对象持久化等场景中。它们允许我们将对象的状态转换为字节流(序列化),然后在需要的时候将字节流还原为原来的对象(反序列化)。在C#...

    C# 各种序列化和反序列化

    在编程世界中,序列化和反序列化是两个至关重要的概念,尤其是在C#这样的面向对象的语言中。它们允许我们将对象的状态转换为数据流,以便存储或传输,然后将这些数据流还原为原来的对象形式。本篇文章将深入探讨C#中...

    c# 利用messagepack对类/数据进行序列化/反序列化示例

    MessagePack是一种高效的二进制序列化格式,它可以在C#中用于序列化和反序列化对象。与其他序列化格式相比,如JSON和XML,MessagePack的编码和解码速度更快,生成的二进制数据更小。在C#中使用MessagePack进行序列化...

    《C#序列化和反序列化之一-二进制序列化》源代码

    在C#编程中,序列化和反序列化是至关重要的技术,它们允许我们将对象的状态转换为数据流(如字节序列),以便存储或传输,之后再恢复为原来的对象形式。本资源聚焦于C#中的二进制序列化,这是一种效率高、数据紧凑的...

    C#2.0序列化和反序列化 程序集反射技术

    在.NET框架中,C# 2.0引入了一系列强大的特性,其中包括序列化和反序列化以及程序集的反射技术。这些技术是开发高效、灵活且可扩展的应用程序的基础,尤其在处理数据持久化、网络通信和组件交互时显得尤为重要。 **...

Global site tag (gtag.js) - Google Analytics