二进制序列化和反序列化--BinaryFormatter 类
基础知识:
序列化基本概念:
序列化 (C#)
序列化是指将对象转换成字节流,从而存储对象或将对象传输到内存、数据库或文件的过程。 它的主要用途是保存对象的状态,以便能够在需要时重新创建对象。 反向过程称为“反序列化”。
序列化的工作原理
下图展示了序列化的整个过程:
将对象序列化为带有数据的流。 该流还可能包含有关对象类型的信息,例如其版本、区域性和程序集名称。 可以将此流中的对象存储在数据库、文件或内存中。
序列化的用途
通过序列化,开发人员可以保存对象的状态,并能在需要时重新创建对象,同时还能存储对象和交换数据。 通过序列化,开发人员可以执行如下操作:
- 使用 Web 服务将对象发送到远程应用程序
- 将对象从一个域传递到另一个域
- 将对象通过防火墙传递为 JSON 或 XML 字符串
- 跨应用程序维护安全或用户特定的信息
警告 二进制序列化可能会十分危险。
文件-路径-FileStream-StreamWriter/StreamReader的创建流程图
类的创建流程和数据流向图,便于理解其工作原理;
序列化代码
//数据存储地址 private static string path = Application.StartupPath + "\\data.bin"; /// <summary> /// 将数据存储到文件的静态方法 /// </summary> public static void SaveToFile() { FileStream stream = new FileStream(path,FileMode.OpenOrCreate); BinaryFormatter binary = new BinaryFormatter(); binary.Serialize(stream,Data); stream.Close(); }
反序列化代码
using System.Runtime.Serialization.Formatters.Binary; /// <summary> /// 从文件下载数据的静态方法 /// </summary> public static void LoadFromFile() { FileStream stream = new FileStream(path,FileMode.Open); BinaryFormatter binary = new BinaryFormatter(); Data = binary.Deserialize(stream) as List<CBase>; stream.Close(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本