微软文档中有写如何使用文件流FileStream对类进行序列化Serialize和反序列化Deserialize。
参考:基本序列化

[Serializable]
public class MyObject {  public int n1 = 0;  public int n2 = 0;  public String str = null;
}

序列化过程:

MyObject obj = new MyObject();
obj.n1 = 1;
obj.n2 = 24;
obj.str = "Some String";
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, obj);
stream.Close();

反序列化过程:

IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
MyObject obj = (MyObject) formatter.Deserialize(stream);
stream.Close();  // Here's the proof.
Console.WriteLine("n1: {0}", obj.n1);
Console.WriteLine("n2: {0}", obj.n2);
Console.WriteLine("str: {0}", obj.str);

如果使用内存流,代码如下:

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using Codeplex.Data;namespace json
{[Serializable]public class MyObject{public int n1 = 0;public int n2 = 0;public String str = null;}class Program{static void Main(string[] args){MyObject obj = new MyObject();obj.n1 = 1;obj.n2 = 24;obj.str = "Some String";IFormatter formatter = new BinaryFormatter();//Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);Stream stream = new MemoryStream();formatter.Serialize(stream, obj);//stream.Close();//Stream stream2 = new FileStream("MyFile.bin", FileMode.Open, FileAccess.Read, FileShare.Read);stream.Seek(0, SeekOrigin.Begin);MyObject obj2 = (MyObject)formatter.Deserialize(stream);stream.Close();// Here's the proof.  Console.WriteLine("n1: {0}", obj2.n1);Console.WriteLine("n2: {0}", obj2.n2);Console.WriteLine("str: {0}", obj2.str);}}
}

注意数据流的seek需要重新定位到起始地址:

stream.Seek(0, SeekOrigin.Begin);

否则会出现异常:

System.Runtime.Serialization.SerializationException:“End of Stream encountered before parsing was completed.”

参考
Deserialize from MemoryStream issue

C# 使用MemeryStream进行序列化相关推荐

  1. 基于Golang的对象序列化的程序包开发——myJsonMarshal

    基于Golang的对象序列化的程序包开发--myJsonMarshal[阅读时间:约10分钟] 一.对象序列化概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体程序设计及 ...

  2. [Java]LeetCode297. 二叉树的序列化与反序列化 | Serialize and Deserialize Binary Tree

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  3. 20190226-利用序列化完成小型记账程序

    写一个记账程序,每天收入多少,支出多少,总额剩多少,使用序列化方式保存信息 算法: 1.读取输入格式为 value|classify,其中value整数表示收入,负数表示支出 2.income列表存取 ...

  4. 转载自——Json.net动态序列化以及对时间格式的处理

    关于我工作中对Json处理的东西 第一:动态序列化类 第二:时间格式处理 通常我们一个类里 可能有十到更多的属性,但是我们序列化通常只需要序列化其中的 三到五个这样的话就会有多余的数据 如果 我只想序 ...

  5. 替换WCF默认序列化方式

    创建类 : using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sy ...

  6. java为什么序列化不一致_java – 为什么Jackson多态序列化在列表中不起作用?

    杰克逊正在做一些真正奇怪的事情,我找不到任何解释.我正在进行多态序列化,当一个对象独立时它可以很好地工作.但是,如果将相同的对象放入列表并对列表进行序列化,则会删除类型信息. 它丢失类型信息的事实将导 ...

  7. java图片序列化_Java中的强大武器——对象的序列化

    原标题:Java中的强大武器--对象的序列化 所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象.这个过程也可以通过网络实现,可以先在Windows机器上创建一个对象, ...

  8. 剑指offer:面试题37. 序列化二叉树

    题目:序列化二叉树 请实现两个函数,分别用来序列化和反序列化二叉树. 示例:  你可以将以下二叉树: 1    / \   2   3      / \     4   5 序列化为 "[1 ...

  9. DRF序列化和反序列化

    一.自定义序列化组件 新建一个任意名的py文件,里面导入serlizer from rest_framework import serializers 自定义一个类继承serializers,里面写需 ...

  10. 序列化和反序列化实现

    1. 什么是序列化? 程序员在编写应用程序的时候往往需要将程序的某些数据存储在内存中,然后将其写入文件或是将其传输到网络中的另一台计算机上以实现通讯.这个将程序数据转换成能被存储并传输的格式的过程被称 ...

最新文章

  1. TF-IDF 原理及sklearn中的tf-idf实例分析
  2. java中迭代方式_JAVA中LIST迭代的方式汇总
  3. 量子计算机能让科技发展有多快,量子计算机有多快?
  4. IOS之导航控制器与表视图
  5. 数据在市场运营中的应用
  6. 数字金融反欺诈技术名词表
  7. 使用Mysql 5.5数据库Hibernate自动建表创建表出错table doesn't exist
  8. 多核技术对计算机技术的影响,计算机新技术——多核技术.doc
  9. python导入鸢尾花数据集_python KNN算法实现鸢尾花数据集分类
  10. 第一章 Visual Basic入门
  11. 服务器音频文件缓存,音频文件如何缓存到本地,和播放缓存到本地的音频文件...
  12. 禁止 Windows 10 和 Windows Server 自动更新
  13. 【论文笔记】Explainable Reasoning over Knowledge Graphs for Recommendation
  14. 解决网页无法复制文字
  15. 软件架构设计原则-里氏替换原则
  16. 分治法:快速排序棋盘覆盖
  17. mac打不开txt文件,出现“文本编码“中文 (GB 18030)”不适用。”的解决办法
  18. 【洛谷习题】通往奥格瑞玛的道路
  19. js获取手机屏幕分辨率和物理分辨率
  20. MySql Povit,[MySQL|Postgresql] Pivot 通用技巧

热门文章

  1. [OpenGL] 动态积雪效果
  2. JAVA ——线程概念(线程的生命周期及使用)
  3. unity功能开发——实名认证
  4. 身份证号实名认证标准版API开发文档
  5. 【安卓】3.修改列表增加下划线样式(保姆级图文+附示例)
  6. java对zip、rar、7z文件带密码解压实例
  7. hipster_通过Java Hipster升级Spring Security OAuth和JUnit测试
  8. gold storm翔_牙狼GOLD STORM翔的人物简介
  9. background 与 background-image
  10. 83 项开源视觉 SLAM 方案够你用了吗?