• Windows Phone 序列化和压缩


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Xml.Serialization;
    using System.IO;

    namespace A_提料
    {
    public class XMLSerializerHelper
    {
    public static void Serialize(Stream streamObject, object objForSerialization)
    {
    if (objForSerialization == null || streamObject == null)
    return;

    XmlSerializer serializer = new XmlSerializer(objForSerialization.GetType());
    serializer.Serialize(streamObject, objForSerialization);
    }

    public static object Deserialize(Stream streamObject, Type serializedObjectType)
    {
    if (serializedObjectType == null || streamObject == null)
    return null;

    XmlSerializer serializer = new XmlSerializer(serializedObjectType);
    return serializer.Deserialize(streamObject);
    }
    }
    }

    序列化用的...

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using ICSharpCode.SharpZipLib.GZip;

    namespace A_提料
    {
    public class DataCompress
    {
    public static byte[] 压缩(object obj)
    {
    byte[] tmp = ObjectToByte(obj);
    return Compress(tmp);
    }

    public static object 解压缩(byte[] data, Type type)
    {
    byte[] tmp = Decompress(data);
    return ByteToObject(tmp, type);
    }

    private static byte[] ObjectToByte(object obj)
    {
    byte[] binaryDataResult = null;
    MemoryStream memStream = new MemoryStream();
    XMLSerializerHelper.Serialize(memStream, obj);
    binaryDataResult = memStream.ToArray();
    memStream.Close();
    memStream.Dispose();
    return binaryDataResult;
    }

    private static object ByteToObject(byte[] data, Type type)
    {
    MemoryStream memStream = new MemoryStream(data);
    object obj = XMLSerializerHelper.Deserialize(memStream, type);
    memStream.Close();
    memStream.Dispose();
    return obj;
    }

    private static byte[] Compress(byte[] data)
    {
    byte[] bData;
    MemoryStream ms = new MemoryStream();
    GZipOutputStream stream = new GZipOutputStream(ms);
    stream.Write(data, 0, data.Length);
    stream.Close();
    stream.Dispose();
    bData = ms.ToArray();
    ms.Close();
    ms.Dispose();

    return bData;
    }

    private static byte[] Decompress(byte[] data)
    {
    byte[] bData;
    MemoryStream ms = new MemoryStream();
    ms.Write(data, 0, data.Length);
    ms.Position = 0;
    GZipInputStream stream = new GZipInputStream(ms);
    byte[] buffer = new byte[1024];
    MemoryStream temp = new MemoryStream();
    int read = stream.Read(buffer, 0, buffer.Length);
    while (read > 0)
    {
    temp.Write(buffer, 0, read);
    read = stream.Read(buffer, 0, buffer.Length);
    }
    //必须把stream流关闭才能返回ms流数据,不然数据会不完整
    stream.Close();
    stream.Dispose();
    ms.Close();
    ms.Dispose();
    bData = temp.ToArray();
    temp.Close();
    temp.Dispose();
    return bData;
    }
    }
    }

    序列化和压缩任意 object ....

    需要引用一个

    ICSharpCode.SharpZipLib.GZip.dll

  • 相关阅读:
    恶意代码 第三章作业3
    openGauss使用指南
    Latex从入门到入门(不再更新,原因是博客园不支持latex语法,写的太累了)
    《网络对抗技术》Exp4 恶意代码分析
    恶意代码 第三章作业2
    《网络对抗技术》Exp5 信息搜集与漏洞扫描
    第三章作业数据查询
    实验一密码引擎商用密码算法实现1中遇到的问题
    buuctf学习笔记
    网页设计中的默认字体样式详解
  • 原文地址:https://www.cnblogs.com/makubexsoft/p/2417751.html
Copyright © 2020-2023  润新知