首页 > 编程语言 >c#如何使用MemoryStream和BinaryFormatter进行对象的序列化和返序列化

c#如何使用MemoryStream和BinaryFormatter进行对象的序列化和返序列化

时间:2023-02-23 15:35:51浏览次数:61  
标签:arr obj MemoryStream c# BinaryFormatter ms 序列化

c#如何使用MemoryStream和BinaryFormatter进行对象的序列化和返序列化

  

1 下面是我写的一个序列化的类

public static class ObjSerialize
{
/// <summary>
/// 将对象数组obj序列化,内存中的缓冲区的数据序列化
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static byte[] Serialize(object obj)
{
byte[] arr = null;
if (obj!=null)
{
//MemoryStream类用于向内存而不是磁盘读写数据
using (MemoryStream ms=new MemoryStream())
{
//序列化操作,把内存中的东西写到硬盘中
BinaryFormatter fomatter = new BinaryFormatter();
fomatter.Serialize(ms, obj);
ms.Flush();
arr = ms.ToArray();
}
}
return arr;
}

public static object Deserialize(byte[] arr)
{
object obj = null;
using (MemoryStream ms=new MemoryStream())
{
ms.Write(arr, 0, arr.Length);
ms.Flush();
ms.Position = 0;
BinaryFormatter formatter = new BinaryFormatter();
obj= formatter.Deserialize(ms);
}
return obj;
}
}

2 测试这个类

  我自己新建了一个student的对象,他只有id和name两个属性

 控制台测试代码这里需要吧student类标记为serializable

Student stu = new Student()
{
ID = 1,
Name = "王宝强"
};

byte[] arr= ObjSerialize.Serialize(stu);
for (int i = 0; i < arr.Length; i++)
{
Console.WriteLine(arr[i]);
}

结果如下:

反序列化的测试代码和结果如下

Student ss= (Student)ObjSerialize.Deserialize(arr);
Console.WriteLine("{0}----{1}",ss.ID,ss.Name);

 

转载于:https://www.cnblogs.com/mibing/p/5808078.html

标签:arr,obj,MemoryStream,c#,BinaryFormatter,ms,序列化
From: https://www.cnblogs.com/kelelipeng/p/17148119.html

相关文章

  • Interop.Excel 个人总结(一)
    第一步,点击项目,管理nuget程序包,浏览Microsoft.Office.Interop.Excel   第二步,创建一个应用程序Microsoft.Office.Interop.Excel.Applicationapp =newMicrosoft......
  • 一次docker启动错误unable to configure the Docker daemon with file /etc/docker/da
    环境:三台服务器,一台daemon可以启动,另外两台不行解决原因:服务器内有两个docker.service,其中一个有配置--insecure-registry=127.0.0.1,重命名后启动docker可用报错如下:2月......
  • cmake搭建cpp测试工程
    创建目录结构撰写CMakeLists.txt点击查看代码#cmake需求的最小版本,2和3不兼容#cmake_minimum_required(VERSION3.1)#置工程名称project(HELLO)#设置变量SOU......
  • SAP UI5 index.html 里的 bootstrap script 介绍
    在SAPUI5应用程序的index.html文件中,通常有一行类似于以下代码的声明:<scriptid="sap-ui-bootstrap"src="resources/sap-ui-core.js"data-sap-ui-theme="sap_b......
  • Nginx SSL+tomcat,request.getScheme() 取到的协议不正确
    原文地址:https://blog.csdn.net/caicaimaomao/article/details/126362415现象:使用Nginx代理tomcat,使用https访问,在火狐浏览器下无法访问。没有使用Nginx时,直接通通过tomc......
  • docker卸载提示Device or resource busy
    1. 停掉运行的容器,停掉docker先停掉全部运行的容器,并删除dockerkill$(dockerps-a-q)##删除所有的docker容器dockerrm$(dockerps-a-q)##删除所有的docker镜......
  • [ChatGPT 勘误] 关于 CL_WB_PGEDITOR 的用途
    ChatGPT对于SAPABAP里CL_WB_PGEDITOR这个工具类用途的回答:在ABAP中,CL_WB_PGEDITOR是一个用于管理SAPWebDynproABAP页签编辑器(PageEditor)的类。PageEdi......
  • GoAccess - 可视化 Web 日志分析工具
    Centos安装:yum-yinstallgoaccess使用goaccess命令生成HTML文件LANG="en_US.UTF-8"bash-c'goaccess/usr/local/nginx/logs/access.log-o/usr/local/nginx/......
  • echo命令的小技巧
    echo的用法/bin/echo--help用法:/bin/echo[短选项]...[字符串]...或:/bin/echo长选项将STRING回显到标准输出。-n 不尾随换行符-e 启用解释反斜杠的转义功能......
  • [Typescript] OVerride external library Types
    import{getAnimatingState}from"fake-animation-lib";import{Equal,Expect}from"../helpers/type-utils";constanimatingState=getAnimatingState();ty......