SerializeHelper 序列化和反序列化类 【2016-04-06 11:20更新】

SerializeHelper 序列化和反序列化类

.NET

306 2016/4/6 11:20

using System;
    using System.IO;
    using System.Runtime.Serialization;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.Runtime.Serialization.Formatters.Soap;
    using System.Text;
    using System.Xml.Serialization;
    
    public static class SerializeHelper
    {
        //反序列化
        public static object DeserializeBytes(byte[] buff, int index, int count)
        {
            IFormatter formatter = new BinaryFormatter();
            MemoryStream serializationStream = new MemoryStream(buff, index, count);
            object obj2 = formatter.Deserialize(serializationStream);
            serializationStream.Close();
            return obj2;
        }
        //序列化
        public static byte[] SerializeObject(object obj)
        {
            IFormatter formatter = new BinaryFormatter();
            MemoryStream serializationStream = new MemoryStream();
            formatter.Serialize(serializationStream, obj);
            byte[] buffer = serializationStream.ToArray();
            serializationStream.Close();
            return buffer;
        }
        //反序列化
        public static object DeserializeString(string str)
        {
            byte[] bytes = Encoding.Default.GetBytes(str);
            IFormatter formatter = new SoapFormatter();
            MemoryStream serializationStream = new MemoryStream(bytes, 0, bytes.Length);
            object obj2 = formatter.Deserialize(serializationStream);
            serializationStream.Close();
            return obj2;
        }
        //序列化
        public static string SerializeObjectToString(object obj)
        {
            IFormatter formatter = new SoapFormatter();
            MemoryStream serializationStream = new MemoryStream();
            formatter.Serialize(serializationStream, obj);
            serializationStream.Position = 0L;
            string str = new StreamReader(serializationStream).ReadToEnd();
            serializationStream.Close();
            return str;
        }
        public static T ObjectXml<T>(string str)
        {
            return (T) ObjectXml(str, typeof(T));
        }
        
        public static object ObjectXml(string str, Type targetType)
        {
            byte[] bytes = Encoding.Default.GetBytes(str);
            XmlSerializer serializer = new XmlSerializer(targetType);
            MemoryStream stream = new MemoryStream(bytes, 0, bytes.Length);
            object obj2 = serializer.Deserialize(stream);
            stream.Close();
            return obj2;
        }
        
        public static object ReadFromFile(string filePath)
        {
            byte[] buff = FileHelper.ReadFileReturnBytes(filePath);
            return DeserializeBytes(buff, 0, buff.Length);
        }
        
        public static void SaveToFile(object obj, string filePath)
        {
            FileStream serializationStream = new FileStream(filePath, FileMode.OpenOrCreate);
            IFormatter formatter = new BinaryFormatter();
            formatter.Serialize(serializationStream, obj);
            serializationStream.Flush();
            serializationStream.Close();
        }
        
        public static void SerializeObject(object obj, ref byte[] buff, int offset)
        {
            byte[] buffer = SerializeObject(obj);
            for (int i = 0; i < buffer.Length; i++)
            {
                buff[offset + i] = buffer[i];
            }
        }
        
        public static string XmlObject(object obj)
        {
            XmlSerializer serializer = new XmlSerializer(obj.GetType());
            MemoryStream stream = new MemoryStream();
            serializer.Serialize((Stream) stream, obj);
            stream.Position = 0L;
            string str = new StreamReader(stream).ReadToEnd();
            stream.Close();
            return str;
        }
    }


上一篇 下一篇
music cover

歌曲名称

作者

00:00/00:00

歌名 歌手 时长