您的位置:首页 > 其它

序列化和反序列化的一个简单练习

2016-05-04 22:05 260 查看
using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.IO;

using System.Runtime.Serialization.Formatters.Binary;

//运行的时候,序列化--格式化器里面的-2进制类命名空间 

namespace 对象的序列化与反序列化

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)

        {

        }

        private void button1_Click(object sender, EventArgs e)

        {

            Student student = new Student()

            {

                Name = textBox1.Text.Trim(),

                Age = Convert.ToInt32(textBox2.Text.Trim()),

                Birthday = Convert.ToDateTime(textBox3.Text)

            };

            FileStream fs = new FileStream(@"D:\用户目录\Desktop\2.txt", FileMode.Create);

            BinaryFormatter bf = new BinaryFormatter();    //创建2进制格式化器

            bf.Serialize(fs,student);

            fs.Close();

            //StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);

            //sw.WriteLine(student.Name);

            //sw.WriteLine(student.Age);

            //sw.WriteLine(student.Birthday);

            //sw.Close();

            //fs.Close();

            //MessageBox.Show("成功写入");

        }

        private void button2_Click(object sender, EventArgs e)

        {

            FileStream fs = new FileStream(@"D:\用户目录\Desktop\2.txt", FileMode.Open);

            BinaryFormatter bf = new BinaryFormatter();//定义了一个二进制格式化器

            Student student = (Student)bf.Deserialize(fs);//将文件对象fs的用二进制格式化器反序列化;因为反序列化之后的对象是Object类型的,在这里将他强制类型转换为Student类型

            textBox1.Text = student.Name;

            textBox2.Text = student.Age.ToString();

            textBox4.Text = student.Birthday.ToString();

            fs.Close();

           // StreamReader sr = new StreamReader(fs);

           //textBox1.Text=sr.ReadLine();

           //textBox2.Text = sr.ReadLine();

           //textBox3.Text = sr.ReadLine();

           // sr.Close();

           // fs.Close();

        }

    }

}

---------------------------------添加类 的代码-------------------------------------------

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace 对象的序列化与反序列化

{

    [Serializable]

    class Student

    {

        public string Name

        {

            get;

            set;

        }

        public int Age

        {

            get;

            set;

        }

        public DateTime Birthday

        {

            get;

            set;

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: