zoukankan      html  css  js  c++  java
  • 序列化

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.IO;

    namespace Sys
    {
        [Serializable] 
    //指示一个类可以序列化
        public class Element
        {
            
    //复制对象
            public object DeepClone()
            {
                
    object result = null;
                
    using (MemoryStream ms = new MemoryStream()) //内存流
                {
                    BinaryFormatter bf 
    = new BinaryFormatter();//以二进制格式序列化对象
                    bf.Serialize(ms, this);//将对象序列化为内存流
                    ms.Seek(0, SeekOrigin.Begin);
                    result 
    = bf.Deserialize(ms); //将内存流反序列化为对象
                }
                
    return result;
            }

            
    //保存对象到文件
            
    //(对象序列化到ms)→(ms写入byte[])→(byte[]写入流)
            public void WriteInstanceToFile(string fileName)
            {
                
    using (MemoryStream ms = new MemoryStream())
                {
                    BinaryFormatter bf 
    = new BinaryFormatter();
                    bf.Serialize(ms, 
    this);
                    ms.Seek(
    0, SeekOrigin.Begin);
                    
    byte[] buffer = new byte[ms.Length];
                    ms.Read(buffer, 
    0, buffer.Length);
                    ms.Seek(
    0, SeekOrigin.Begin);

                    FileStream stream 
    = new FileStream(fileName, FileMode.Create);
                    stream.Write(buffer,
    0,buffer.Length);
                }
            }

            
    //从文件中读取对象
            public static object ReadInstanceFromFile(string fileName)
            {
                
    object result = null;
                FileStream stream 
    = new FileStream(fileName, FileMode.Open);//以二进制格式序列化对象
                BinaryFormatter bf = new BinaryFormatter();
                result 
    = bf.Deserialize((Stream)stream); //流反序列化为对象
                stream.Close();
                
    return result;
            }
        }
    }
  • 相关阅读:
    Winform使用ML.NET时无法加载 DLL“CpuMathNative”问题的解决方法
    离线安装nuget包EPPlus
    码云上webide怎么提交
    EXCEL中自定义格式输入的数据怎么完整复制
    远程桌面剪贴板不好用了
    电脑里明明安装了net4.7但是VS里不显示?
    微信公众号里的音频怎么下载
    Hibernate-ORM:06.Hibernate中三种状态
    Hibernate-ORM:05.Hibernate中的list()和iterator()
    Hibernate-ORM:04.Hibernate中的get()和load()
  • 原文地址:https://www.cnblogs.com/perfect/p/1223777.html
Copyright © 2011-2022 走看看