对象序列化与反序列化

原创 2015年11月19日 09:41:11

对象序列化与反序列化优点:数据安全,保存读取简单快捷,应用很广。

小示例:序列化保存对象与反序列化读取对象

1.先定义一个学生对象,代码如下:

    [Serializable]//可序列化标识
    class Student
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string BirthDay { get; set; }
        public string Sex { get; set; }
    }

2.新建窗体,后台代码中定义两个方法分别用来保存、读取

        /// <summary>
        /// 保存学生信息
        /// </summary>
        /// <param name="objStudent"></param>
        private void SaveStudent(Student objStudent)
        {
            FileStream fs = new FileStream("Student.obj", FileMode.Create);
            BinaryFormatter bf = new BinaryFormatter();
            bf.Serialize(fs, objStudent);
            fs.Close();
        }
        /// <summary>
        /// 读取学生信息
        /// </summary>
        /// <returns></returns>
        private Student ReadStudent()
        {
            FileStream fs = new FileStream("Student.obj",FileMode.Open);
            BinaryFormatter bs = new BinaryFormatter();
            Student objStudent = (Student)bs.Deserialize(fs);
            fs.Close();
            return objStudent;
        }

3.在按钮的事件中,分别调用上一步定义的方法:

        private void btnSave_Click(object sender, EventArgs e)
        {
            Student s = new Student {
            Name = "李超",
            Age = 18,
            BirthDay = "1998-02-02",
            Sex = "男"
            };

            SaveStudent(s);

            MessageBox.Show("保存成功");
        }

        private void btnRead_Click(object sender, EventArgs e)
        {
            Student objStudent = ReadStudent();
            string strStudent = "姓名:"+ objStudent.Name + Environment.NewLine;
            strStudent += "性别:" + objStudent.Sex + Environment.NewLine;
            strStudent += "年龄:" + objStudent.Age + Environment.NewLine;
            strStudent += "生日:" + objStudent.BirthDay + Environment.NewLine;

            MessageBox.Show(strStudent);
        }


Java对象序列化详解

所有分布式应用常常需要跨平台,跨网络,因此要求所有传的参数、返回值都必须实现序列化。一、定义  序列化:把Java对象转换为字节序列的过程。      反序列化:把字节序列恢复为Java对象的过程...
  • zcl_love_wx
  • zcl_love_wx
  • 2016年08月10日 14:47
  • 4354

Java 对象序列化机制详解

对象序列化的目标:将对象保存到磁盘中,或允许在网络中直接传输对象。 对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久的保存在磁盘上,通过网络将这种二进制流...
  • zuiwuyuan
  • zuiwuyuan
  • 2014年10月09日 22:24
  • 1067

C#对象序列化详解

C#中的序列化主要是通过一个格式化工具获取某个自定义类型对象中的所有数据成员并写入传入的一个文件流中,或者从文件流对象中               解析出某个自定义类型对象中的所有数据成员并赋值到...
  • u011390632
  • u011390632
  • 2013年12月08日 17:30
  • 1832

php 序列化对象

习惯性借用手册里面的介绍: 所有php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示。unserialize()函数能够重新把字符串变回php原来的值。序列化一个对象...
  • A757291228
  • A757291228
  • 2017年02月26日 23:03
  • 290

java序列化之后,对象的引用关系?

今天写代码的时候用到序列化,不过突然想到这个问题。 于是写了一些测试代码,得出两个结论。 如果两个对象存在引用关系,比如A引用B。 如果两个对象是各自序列化的,则引用关系不再存在。 如果两个对象是是...
  • linger2012liu
  • linger2012liu
  • 2014年07月24日 19:44
  • 1955

输入输出之对象序列化Serializable

1.对象序列化的目标 将对象保存到磁盘中,或允许在网络中直接输出对象。 2.对象序列化的含义 对象的序列化是指将一个Java对象写入IO流中。 对象的反序列化是...
  • hanhan1016
  • hanhan1016
  • 2015年09月18日 14:21
  • 998

Java序列化对象的存储和读取

本文对javaIO流中序列化徐对象的写入和读取方法做示例演示。
  • wenzhi20102321
  • wenzhi20102321
  • 2016年09月30日 13:41
  • 1337

python对象序列化

这篇文章主要介绍了Python中的序列化存储的方法,序列化存储主要针对的是内存和硬盘之间的写入操作,需要的朋友可以参考下 在程序运行的过程中,所有的变量都是在内存中,比如,定义一个dict: ...
  • kuaileboy1989
  • kuaileboy1989
  • 2015年08月21日 11:17
  • 1672

Java中对象序列化的作用是什么?java RMI是什么意思?

转自:http://hi.baidu.com/lanqibaoer/item/9366062187f7271642634a2f ***Java中对象序列化的作用是什么?   1、序列化是干...
  • onlyonename
  • onlyonename
  • 2013年01月02日 12:21
  • 2820

序列化(Serialization)一个对象

1. 序列化的概念         序列化: 将数据结构或对象转换成二进制串的过程,简单理解就是将对象转换为容易传输的格式的过程。 2. 序列化的作用    序列化是为了保存内存中各种对象的状态,并且...
  • xby_869151205
  • xby_869151205
  • 2016年08月06日 17:19
  • 468
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对象序列化与反序列化
举报原因:
原因补充:

(最多只允许输入30个字)