张德长

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

二进制序列化和反序列化--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();
}

 

posted on   张德长  阅读(679)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示