首页 > 编程语言 >C#——二进制流序列化和反序列化

C#——二进制流序列化和反序列化

时间:2024-07-09 09:30:41浏览次数:18  
标签:fs C# 二进制 MyObject new BinaryFormatter 序列化

C#二进制流序列化和反序列化

在C#中,可以使用BinaryFormatter来进行二进制的序列化和反序列化。

首先,定义一个可序列化的类
[Serializable]
public class MyObject
{
    public int IntProperty { get; set; }
    public string StringProperty { get; set; }
}

使用BinaryFormatter进行序列化和反序列化
序列化Serialize
MyObject Object= new MyObject(){};  // 创键要存储的对象
// 1 创建文件流  
FileStream fs = new FileStream(@"1.txt",FileMode.Create);                                
// 2 创建一个二进制序列化格式器 (Binary 二进制    Formatter 格式化)
 BinaryFormatter bf = new BinaryFormatter();                                                     
// 3 调用序列化方法    serialize() 解析 p1对象 存入fs文件流里面
bf.Serialize(fs, Object);                                                                                                         
// 4 关闭文件流
 fs.Close();

反序列化Deserialize
// 1 创建文件流
FileStream fs = new FileStream(@"1.txt",FileMode.Open);

// 2 创建序列化格式
BinaryFormatter bf = new BinaryFormatter();

// 3 调用反序列化方法
MyObject Object = bf.Deserialize(fs) as MyObject;

// 4 关闭文件流
fs.Close();

标签:fs,C#,二进制,MyObject,new,BinaryFormatter,序列化
From: https://blog.csdn.net/qq_3517289697/article/details/140273049

相关文章

  • C#——XML格式序列化和反序列化
    C#—XML格式序列化和反序列化在C#中,可以使用System.Xml.Serialization命名空间下的XmlSerializer类来实现XML的序列化。首先,定义一个可序列化的对象模型:usingSystem;usingSystem.Xml.Serialization;[XmlRoot("Person")]publicclassPerson{[XmlElement("Name"......
  • backtrace() 段错误定位
    段错误定位原因是昨天遇到一个BUG,复现概率很小,一直复现了一下午,后来google发现可以用execinfo.h里的backtrace函数及信号处理机制,来让程序在发生段错误时自动打印调用堆栈。最后终于复现出来了两次,用这个函数也定位到了出错位置,是多线程下的一个同步问题。之前遇到的BUG基本都......
  • C#——多态详情
    多态多态:是同一个行为,具有多个不同表现形式或形态的能力多态分为两种:静态性多态:函数重载,符号重载动态性多态:虚方法,抽象类,接口静态多态在编译时,函数和对象的连接机制被称为早期绑定,也被称为静态绑定。C#提供了两种技术来实现静态多态性。分别为:•函数重载•运算......
  • 创建vue-cli脚手架项目 和各个文件夹用途(最全面)
    一、安装Vue脚手架1、第一步(仅第一次执行):全局安装@vue/cli npmi@vue/cli-g2、切换到要创建项目的目录,然后创建项目vuecreatehellocli3、 进入项目 cdhellocli4、启动项目npmrunserve(默认一般是可从package.json→scripts下查看 )二、vue-cli脚手架初......
  • 运营商如何与第三方服务商合作,共同建设PCDN网络?
    运营商与第三方服务商合作,共同建设PCDN(P2PCDN)网络,是一个涉及技术、资源、运营等多方面的复杂过程。以下是一些建议的操作步骤:一.明确合作目标与业务模式:1.运营商与第三方服务商首先需要明确合作的目标,例如提升网络覆盖、降低运营成本、提高内容分发效率等。2.根据目标确定合......
  • Linux系统运维命令:查看http的并发请求数及其TCP连接状态(使用netstat结合awk和sort,组合
    一、需求二、解决方法(一)解决思路(二)命令三、实例演示和命令解释(一)实例演示(二)命令解释四、扩展一、需求用户访问一个视频监控平台的web服务特别频繁,据客户说,有大概2000个用户,要随机访问这个视频监控平台,这样对带宽的要求非常大。因此,他们需要查看到底有多少个http的并......
  • C++ 保障异常安全的手段和措施
    在C++中,保障异常安全是编写健壮、可靠代码的重要方面。异常安全确保程序在遇到异常时能够正确处理,不会导致资源泄露或数据不一致等问题。以下是一些保障C++异常安全的手段和措施:1.RAII(资源获取即初始化)RAII是一种在C++中广泛使用的资源管理技术,它通过对象的构造函数获取......
  • SpringBoot使用jdbcTemplate连接人大金仓按月备份表
    方式一:采用SELECT*INTOFROM复制表数据以及结构到新表,再清空原表并重置序列代码如下:点击查看代码privatevoidpnsDataCopy(){log.info("{}===>表开始复制",PNS_TABLE);longl=System.currentTimeMillis();TransactionStatustransactionS......
  • NCCL拓扑管理 - Topo模块
    Topo模块提供System拓扑和Graph拓扑的构建接口,依赖XML模块。链路链路带宽NCCL对不同链接进行建模,但数值的绝对值看起来并不准,笔者估计代码开源时做了保密处理,但只要数值的相对值不影响拓扑搜索便对执行逻辑没有影响,所以无需较真这些带宽数值。#defineLOC_BW5000.0#de......
  • camunda快速入门(四):如何设计一个带条件分支的流程
    在本节中,您将学习如何使用BPMN2.0排他网关(ExclusiveGateways)使流程更加动态。1、添加两个网关我们想修改我们的流程,使其更具动态性。为此,请在CamundaModeler中打开该过程。接下来,从Modeler的左侧菜单中,选择网关形状(菱形)并将其拖动到“开始事件”和“服务任务”之间的......