.net学习笔记--序列化与反序列化

序列化其实就是将一个对象的所有相关的数据保存为一个二进制文件(注意:是一个对象)

而且与这个对象相关的所有类型都必须是可序列化的所以要在相关类中加上 [Serializable]特性

对象类型包括:对象本神包含的类型,父类

拥有需要的对象之后:1.将对象转换为二进制数据 使用专门的对像进行转换 BinaryFormatter

2.将二进制数据写入到文件 FileSteam

反序列化则是把二进制文件转换为一个对象

例子代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using System.IO;
 7 using System.Runtime.Serialization.Formatters.Binary;
 8 namespace ConsoleApplication1
 9 {
10     class Program
11     {
12         static void Main(string[] args)
13         {
14             Person per;//将要被序列化的对象
15             Console.WriteLine("------序列化与反序列化------");
16             Console.WriteLine("是否读取已经序列化的对象per");
17             string str = Console.ReadLine();
18             if (str == "yes")
19             {
20                 if (!File.Exists("save.bin"))
21                 {
22                     Console.WriteLine("你还没有将per序列化");
23                     return;
24                 }
25                 using (FileStream fs = new FileStream("save.bin", FileMode.Open))
26                 {
27                     BinaryFormatter bf = new BinaryFormatter();
28                     per = bf.Deserialize(fs) as Person;//将二进制数据转换为per对象
29                     per.SayHi();
30                     Console.ReadLine();
31                 }
32             }
33             else
34             {
35                 per = new Person();
36                 per.Name = "小李";
37                 using(FileStream fs=new FileStream("save.bin",FileMode.Create))
38                 {
39                     BinaryFormatter bf = new BinaryFormatter();
40                     bf.Serialize(fs,per);//将per对象转换成二进制数据,并保存。
41                     Console.WriteLine("序列化成功");
42                     Console.ReadLine();
43                 }
44             }
45
49         }
50     }
51     [Serializable]
52     class Person
53     {
54         public string Name;
55         public void SayHi()
56         {
57             Console.WriteLine("hello {0}",Name);
58         }
59     }
60 }

.net学习笔记--序列化与反序列化,布布扣,bubuko.com

时间: 2024-10-14 00:50:02

.net学习笔记--序列化与反序列化的相关文章

Python 学习笔记 - 序列化和反序列化

这一节看看在Python中如何序列化和反序列化.简单的说,序列化就是把内存中保存的数据类型转换为可以存储或者传输的过程,比如说我把一个字典转换为一个字符串这样就可以方便传递或者保存了:反序列化则是倒过来,把字符串转换为对应的数据类型. Python里面常用的有两种方式. JSON Pickle 首先来看看JSON, 例1 比如说我有一个字典如下所示: >>> import json dic={"k1":"v1"} print(dic,type(di

Java学习笔记——序列化和反序列化

寒雨连江夜入吴,平明送客楚山孤. 洛阳亲友如相问,一片冰心在玉壶. --芙蓉楼送辛渐 持久化数据的第一种方式.在序列化之前也可以把数据打散逐行存储在文件中,然后在逐行读取. 比如定Student类 用字符输出流把Student类的所有属性存入本地文件: 张三|18|男 李四|18|女 读取一行,用|分隔的数据分别为学生的name,age,gender,创建学生对象并加入学生集合 循环上一步直到br.readLine = null 至于这种方法怎么存储对象的其他信息那就不清楚了. 下面来看序列化

【JAVA学习】序列化与反序列化

尊重原创:http://zhidao.baidu.com/question/155071231.html?fr=qrl&cid=870&index=1 1.序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存Object States,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化. 2.什么情况下需要序列化 a)当你想把的内存中的对象保存到一个文件中或者数据库中时候: b)当你

C#网络编程学习(7)---序列化和反序列化

1.什么是序列化和反序列化 当客户端和服务器进行远程连接时,互相可以发送各种类型的数据.但都要先把这些对象转换为字节序列,才能在网络上进行传输. 序列化:就是发送方 把对象转换为字节序列的过程. 反序列化:就是接收方 把字节序列转换为对象的过程. 2.BinaryFormatter BinaryFormatter以二进制格式序列化和反序列化对象. 属性: Serializable:表示可以被序列化 NonSerializable:屏蔽序列化 方法: binaryFormatter.Seriali

python学习笔记 序列化

在程序运行的过程中,所有的变量都是在内存中,比如,定义一个dict: d = dict(name='Bob', age=20, score=88) 可以随时修改变量,比如把name改成'Bill',但是一旦程序结束,变量所占用的内存就被操作系统全部回收.如果没有把修改后的'Bill'存储到磁盘上,下次重新运行程序,变量又被初始化为'Bob'. 我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshal

java中的序列化和反序列化学习笔记

需要序列化的Person类: package cn.itcast_07; import java.io.Serializable; /* * NotSerializableException:未序列化异常 * * 类通过实现 java.io.Serializable 接口以启用其序列化功能.未实现此接口的类将无法使其任何状态序列化或反序列化. * 该接口居然没有任何方法,类似于这种没有方法的接口被称为标记接口. * * java.io.InvalidClassException: * cn.it

对象的序列化与反序列化---IO学习笔记(四)

对象的序列化,反序列化 对象的序列化: 就是将Object转换成byte序列 对象的反序列化: 将byte序列转换成Object 序列化流.反序列化流 序列化流(ObjectOutputStream),是字节的过滤流->主要方法:writeObject() 反序列化流(ObjectInputStream)->主要方法:readObject() 序列化接口(Serializable) 对象必须实现序列化接口.才干进行序列化.否则将出现异常 这个接口,没有不论什么方法,仅仅是一个标准. 主要的对象

java中的对象的序列化与反序列化的知识点---IO学习笔记(四)

对象的序列化,反序列化 对象的序列化: 就是将Object转换成byte序列 对象的反序列化: 将byte序列转换成Object 序列化流,反序列化流 序列化流(ObjectOutputStream),是字节的过滤流->主要方法:writeObject() 反序列化流(ObjectInputStream)->主要方法:readObject() 序列化接口(Serializable) 对象必须实现序列化接口,才能进行序列化,否则将出现异常 这个接口,没有任何方法,只是一个标准. 基本的对象序列化

Python学习笔记__9.4章 序列化

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 在程序运行的过程中,所有的变量都是在内存中.但是一旦程序结束,变量所占用的内存就被操作系统全部回收.而如果要保存变量的修改,我们就可以用序列化. 我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling. 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上 反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling. 2.pickle模块 Python提供了