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);
c#如何使用MemoryStream和BinaryFormatter进行对象的序列化和返序列化的更多相关文章
- 序列化和返序列化的概述和对象的序列化流ObjectOutputStream
序列化和返序列化的概述 对象的序列化流ObjectOutputStream Person类: package com.yang.Test.ObjectStreamStudy; import java. ...
- Java对象序列化和返序列化
public class SerializeUtil { /** * 序列化 * * @param object * @return */ public static byte[] serialize ...
- Azure Messaging-ServiceBus Messaging消息队列技术系列4-复杂对象消息是否需要支持序列化和消息持久化
在上一篇中,我们介绍了消息的顺序收发保证: Azure Messaging-ServiceBus Messaging消息队列技术系列3-消息顺序保证 在本文中我们主要介绍下复杂对象消息是否需要支持序列 ...
- Java对象表示方式1:序列化、反序列化的作用
1.序列化是的作用和用途 序列化:把对象转换为字节序列的过程称为对象的序列化. 反序列化:把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存 ...
- Java对象表示方式1:序列化、反序列化和transient关键字的作用
平时我们在Java内存中的对象,是无法进行IO操作或者网络通信的,因为在进行IO操作或者网络通信的时候,人家根本不知道内存中的对象是个什么东西,因此必须将对象以某种方式表示出来,即存储对象中的状态.一 ...
- 小解系列-自关联对象.Net MVC中 json序列化循环引用问题
自关联对象在实际开发中用的还是比较多,例如常见的树形菜单.本文是自己实际的一个小测试,可以解决循环引用对象的json序列化问题,文笔不好请多见谅,如有错误请指出,希望有更好的解决方案,一起进步. 构造 ...
- hibernate+spring mvc, 解决hibernate 对象懒加载 json序列化问题
引用地址 在使用Spring MVC时,@ResponseBody 注解的方法返回一个有懒加载对象的时候出现了异常,以登录为例: @RequestMapping("login") ...
- Redis:存储对象的两种方式(序列化和json字符串)
方式一:序列化操作 public class SerializeUtil { /* * 序列化 * */ public static byte[] serizlize(Object ...
- C# .NET的BinaryFormatter、protobuf-net、Newtonsoft.Json以及自己写的序列化方法序列化效率和序列化后的文件体积大小对比
测试结果如下图: 测试结果整理后: 结论: 1.这几个工具中,protobuf-net序列化和反序列化效率是最快的 2.BinaryFormatter和Newtonsoft.Json反序列化慢的比较多 ...
随机推荐
- js常用时间转换函数
1.秒转换为时分秒 // 秒转换为时分秒 export function secExchangeMoment(value = 0){ let secondTime = parseInt(value); ...
- 各个处理器架构ISA编程指南
1.Intel官方文档: http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manu ...
- asp.net网站访问时不能显示页面
web => 属性 => web => servers =>create virtual directory
- oracle数据库可视化工具
1.TreeSoft基于web网页方式,管理维护oracle数据,功能包括:SQL在线执行,数据在线维护管理,数据导出,数据交换同步等. 支持MySQL,Oracle,DB2,PostgreSQL,S ...
- Java工程师学习指南第4部分:Java并发编程指南
本文整理了微信公众号[Java技术江湖]发表和转载过的Java并发编程相关优质文章,想看到更多Java技术文章,就赶紧关注本公众号吧吧. [纯干货]Java 并发进阶常见面试题总结 [Java基本功] ...
- python下载一些包出现time out的问题解决
更换镜像点: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package 将package换成自己要下载的包即可 亲测还挺快的
- Windows下遍历所有GIT目录更新项目脚本
将下面代码保存为.bat文件 @echo off set cdir=%~dp0 for /f "delims=" %%i in ('dir /ad/b/s "%cdir% ...
- C语言递归之在每个树行中找最大值
题目描述 您需要在二叉树的每一行中找到最大的值. 示例 输入: / \ / \ \ 输出: [, , ] 题目要求 /** * Definition for a binary tree node. * ...
- Linux特基础的知识(接上一条)
grep:文本过滤工具(找到要找的文本) print lines matching a pattern例: 打印 行 匹配 一个 模式/样式[root@oldboyedu /opt]# grep &q ...
- 「JOISC 2019 Day3」穿越时空 Bitaro
「JOISC 2019 Day3」穿越时空 Bitaro 题解: 不会处理时间流逝,我去看了一眼题解的图,最重要的转换就是把(X,Y)改成(X,Y-X)这样就不会斜着走了. 问题变成二维平面上 ...