8.反序列化二进制数据

  1. 8.CSharp类对象相关-反序列化
    1. 8.1 知识点
      1. 反序列化文件中数据
      2. 反序列化网络传输过来的2进制数据
    2. 8.2 知识点代码

8.CSharp类对象相关-反序列化


8.1 知识点

反序列化文件中数据

主要类

  • FileStream文件流类
  • BinaryFormatter 2进制格式化类

主要方法

  • Deserizlize:通过文件流打开指定的2进制数据文件
using (FileStream fileStream = File.Open(Application.dataPath + "/Lesson07_CSharp类对象相关_序列化1.linwentao", FileMode.Open, FileAccess.Read))
{
    //申明一个 2进制格式化类
    BinaryFormatter binaryFormatter = new BinaryFormatter();

    //反序列化
    Person person = binaryFormatter.Deserialize(fileStream) as Person;

    fileStream.Close();
}

反序列化网络传输过来的2进制数据

主要类

  • MemoryStream内存流类
  • BinaryFormatter 2进制格式化类

主要方法

  • Deserizlize

目前没有网络传输,我们还是直接从文件中获取,模拟网络加载的字节数组

//从文件中读取字节数组
byte[] bytes = File.ReadAllBytes(Application.dataPath + "/Lesson07_CSharp类对象相关_序列化1.linwentao");

//申明内存流对象,一开始就把字节数组传输进去
using (MemoryStream memoryStream = new MemoryStream(bytes))
{
    //申明一个 2进制格式化类
    BinaryFormatter binaryFormatter = new BinaryFormatter();

    //反序列化
    Person person = binaryFormatter.Deserialize(memoryStream) as Person;

    memoryStream.Close();
}

8.2 知识点代码

using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using UnityEngine;

public class Lesson08_CSharp类对象相关_反序列化 : MonoBehaviour
{
    void Start()
    {
        #region 知识点一 反序列化文件中数据

        //主要类
        //FileStream文件流类
        //BinaryFormatter 2进制格式化类

        //主要方法
        //Deserizlize
        //通过文件流打开指定的2进制数据文件

        using (FileStream fileStream = File.Open(Application.dataPath + "/Lesson07_CSharp类对象相关_序列化1.linwentao",
                   FileMode.Open, FileAccess.Read))
        {
            //申明一个 2进制格式化类
            BinaryFormatter binaryFormatter = new BinaryFormatter();

            //反序列化
            Person person = binaryFormatter.Deserialize(fileStream) as Person;

            fileStream.Close();
        }

        #endregion

        #region 知识点二 反序列化网络传输过来的2进制数据

        //主要类
        //MemoryStream内存流类
        //BinaryFormatter 2进制格式化类

        //主要方法
        //Deserizlize

        //目前没有网络传输 我们还是直接从文件中获取 模拟网络加载的字节数组
        byte[] bytes = File.ReadAllBytes(Application.dataPath + "/Lesson07_CSharp类对象相关_序列化1.linwentao");

        //申明内存流对象 一开始就把字节数组传输进去
        using (MemoryStream memoryStream = new MemoryStream(bytes))
        {
            //申明一个 2进制格式化类
            BinaryFormatter binaryFormatter = new BinaryFormatter();

            //反序列化
            Person person = binaryFormatter.Deserialize(memoryStream) as Person;

            memoryStream.Close();
        }

        #endregion
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏