C# 序列号/反序列方法

发布时间 2023-11-28 16:47:30作者: 剑小秀
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace Assist
{
    public class SerializeHelper
    {
        public static void Serialize(object obj, string fileName)
        {
            if (!Directory.Exists(Path.GetDirectoryName(fileName))) Directory.CreateDirectory(Path.GetDirectoryName(fileName));
            BinaryFormatter formatter = new BinaryFormatter();
            using (FileStream stream = new FileStream(fileName, FileMode.Create))
            {
                formatter.Serialize(stream, obj);
            }
        }

        public static T Deserialize<T>(string fileName)
        {
            //反序列化核心代码
            FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
            BinaryFormatter formatter = new BinaryFormatter();
            stream.Seek(0, SeekOrigin.Begin); // 重置流位置到开始处
            return (T)formatter.Deserialize(stream);
        }
    }
}