018.序列化与反序列化的使用案例

序列化反序列化:

序列化:串行化 对象持久化 将对象存储到文件或数据库的字段中

反序列化:将文件恢复成对象

作用:

1、永久保存数据

2、传递数据

要序列化的对象对应的类以及类的属性、子类必须是可序列化的

实现序列化反序列化需要引用命名空间:

Using system.runtime.seralization.formatters.binary;

Runtime 运行时

serialization 序列化

Formatters 格式化程序,格式器

Binary 二进制的

使用实例:题==>创建一个可序列化的类(姓名,地址),然后新建一个本地文件存储信息,进行序列化和反序列化***

1.新建一个Student类,属性有学生的ID/Name/Age/Sex,定义一个父类的重写方法,实现格式化字符串:

namespace Binary
{
[Serializable]//指示一个类可以被序列化 无法继承此类
public class Student
{
private int id;
public int Id
{
get { return id; }
set { id = value; }
}
private string name;

public string Name
{
get { return name; }
set { name = value; }
}
private string sex;

public string Sex
{
get { return sex; }
set { sex = value; }
}
private string qq;

public string Qq
{
get { return qq; }
set { qq = value; }
}
private string homepage;

public string Homepage
{
get { return homepage; }
set { homepage = value; }
}
public Student() { }
public override string ToString()
{
return "学号:" + this.Id + "\n姓名:" + this.Name + "\n性别:" + this.Sex + "\nQQ:" + this.Qq + "\n" + this.Homepage;
}
}
}

2.Main函数中两个方法,序列化和反序列化的方法:

/// <summary>
/// 二进制序列化
/// </summary>
/// <param name="stu"></param>
public static void SerializeStudent(Student stu)
{
FileStream fs = new FileStream("d:\\studentinfo.dat", FileMode.Create);
BinaryFormatter b = new BinaryFormatter();
b.Serialize(fs,stu);
fs.Flush();
fs.Close();
fs.Dispose();
}

/// <summary>
/// 反序列化
/// </summary>
/// <param name="filename"></param>
public static void DeSerializeStudent(string sadf)
{
FileStream fs = new FileStream(sadf, FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
BinaryFormatter b = new BinaryFormatter();
Student stu = (Student)b.Deserialize(fs);
Console.WriteLine(stu.ToString());
fs.Flush();
fs.Close();
fs.Dispose();
}

3.在Main函数中给属性赋值并实现两个自定义方法的调用,并捕获可能出现的异常:

static void Main(string[] args)
{
Student stu = new Student();
stu.Id = 20161108;
stu.Name = "张三";
stu.Sex = "男";
stu.Qq = "914455044";
stu.Homepage = "www.baidu.com";
try
{
SerializeStudent(stu);
string path = "d:\\studentinfo.dat";
DeSerializeStudent(path);
}
catch (Exception ex)
{

Console.WriteLine(ex.Message);
}
Console.ReadKey();
}

时间: 2024-10-26 17:49:20

018.序列化与反序列化的使用案例的相关文章

json序列化和反序列化案例

JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍,ASP.NET如何序列化和反序列化的处理,在序列化和反序列化对日期时间.集合.字典的处理. 序列化简单理解为:把集合.数组等里的数据变成字符串 反序列化简单理解为:把字符串还原成集合,数组等对象. 1.对JSON数据进行序列化和反序列化 方法一: 可以使用DataContractJsonSeria

java 的序列化和反序列化的问题

引言 将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用 ObjectInputStream 和 ObjectOutputStream 进行对象的读写.然而在有些情况下,光知道这些还远远不够,文章列举了笔者遇到的一些真实情境,它们与 Java 序列化相关,通过分析情境出现的原因,使读者轻松牢记 Java 序列化中的一些高级认识. 回页首 文章结构 本

Python库:序列化和反序列化模块pickle介绍

1 前言 在“通过简单示例来理解什么是机器学习”这篇文章里提到了pickle库的使用,本文来做进一步的阐述. 通过简单示例来理解什么是机器学习 pickle是python语言的一个标准模块,安装python后已包含pickle库,不需要单独再安装.pickle模块实现了基本的数据序列化和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象.在官方的介绍中,序列化操作的英文描述

序列化与反序列化之Parcelable和Serializable浅析

转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52665164 出自[zejian的博客] 本篇小部分内容摘自android开发艺术探索 ??在日常的应用开发中,我们可能需要让某些对象离开内存空间,存储到物理磁盘,以便长期保存,同时也能减少对内存的压力,而在需要时再将其从磁盘读取到内存,比如将某个特定的对象保存到文件中,隔一段时间后再把它读取到内存中使用,那么该对象就需要实现序列化操作,在java中可以使用Seri

jackson实现序列化的反序列化解析

现在项目开发过程中,字符串的传递成为前后端交互的主要方式,主要是因为字符串不会出现乱码等问题,传送方式是字节码传递,效率比实体较安全. 常见的Json类库有Gson.JSON-lib和Jackson,fastjson(阿里提供,自称效率最高的)等,Jackson相对来说比较高效,在项目中主要使用Jackson进行JSON和Java对象转换,下面给出一些Jackson的JSON操作方法. 一,下载jackson http://wiki.fasterxml.com/JacksonDownload 二

.net实现序列化与反序列化实例解析

序列化与反序列化是.net程序设计中常见的应用,本文即以实例展示了.net实现序列化与反序列化的方法.具体如下: 一般来说,.net中的 序列化其实就是将一个对象的所有相关的数据保存为一个二进制文件 (注意:是一个对象) 而且与这个对象相关的所有类型都必须是可序列化的所以要在相关类中加上 [Serializable]特性 对象类型包括:对象本身包含的类型,父类 拥有需要的对象之后: 1.将对象转换为二进制数据 使用专门的对像进行转换 BinaryFormatter 2.将二进制数据写入到文件 F

Java基础IO流(四)序列化与反序列化

对象的序列化与反序列化: 对象的序列化,就是将Object转换成byte序列,反之叫对象的反序列化. 序列化流(ObjectOutInputStream),是过滤流 -------writeObject 反序列化流(ObjectInputStream)-----raedObject 序列化接口(Serializable) 对象必须实现序列化接口,才能进行序列化,否则出现异常 这个接口,没有任何方法,只是一个标准. 案例描述:Student,将它序列化到文件中,再反序列化读出. Student类:

2.序列化与反序列化

Java 领域的对象如何传输 基于 socket 进行对象传输 先举个简单的例子,基于我们前面几次课程的只是,写一个 socket 通信的代码 User public class User { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } SocketServerProvider public static

java oop第12章_IO、序列化和反序列化

引言:数据通常通过文件系统保存在外存中,有时需要将他们读取到程序中进行一些操作,Java针对文件系统的操作提供了一套规范,即IO,针对计算机内存而言,输入的称为输入流,输出的称为输出流. 一.      IO的分类:     从传递方向划分:输入流(InputXxx).输出流(OutPutXxx).     从数据格式划分:字节流(XxxStream).字符流(XxxReader.XxxWriter).     从数据中转的节点划分:节点流.过滤流 图源:http://test.processo