zoukankan      html  css  js  c++  java
  • 序列化反序列化

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace 序列化反序列化
    {
    class Program
    {
    static void Main(string[] args)
    {
    //需要将对象的状态保存起来 持久化
    //序列化:将对象的状态持久化到某种设备上(磁盘)
    //要将类标记为Serializable 这个类的对象才能被序列化
    //以二进制的方式进行序列化,而不是文本文档

    //反序列化:将之前序列化的文件还原为对象
    #region[序列化]
    Person p1 = new Person() { Age = 19, Name = "Rose" };
    System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
    using (FileStream fs = new FileStream("se.bin", FileMode.Create))
    {
    bf.Serialize(fs, p1);
    }
    #endregion

    #region【反序列化】
    System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf2 = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
    using (FileStream fs = new FileStream("se.bin", FileMode.Open))
    {
    object obj = bf2.Deserialize(fs);
    Person p3 = obj as Person;
    Console.WriteLine("Age:" + p3.Age.ToString() + "Name:" + p3.Name);
    }
    #endregion


    #region [将一个对象保存到文件文本中,用文件的方式让对象持久化,但是麻烦]
    Person p = new Person();
    if (File.Exists(@"1.txt"))
    {
    string[] strlines = File.ReadAllLines(@"1.txt");
    p.Age = int.Parse(strlines[0]);
    p.Name = strlines[1];
    }
    else
    {
    p.Age = 19;
    p.Name = "Jack";
    File.WriteAllLines(@"1.txt", new string[] { p.Age.ToString(), p.Name });
    }
    #endregion
    Console.Read();
    }

    }
    [Serializable]//表示这个对象可以被序列化,里面的成员如果有其它类,那么这个类也应该需要标记Serializable
    public class Person
    {
    public int Age { get; set; }
    public string Name { get; set; }
    }
    }

  • 相关阅读:
    20162302预备作业02
    20162302预备作业01
    设计模式第二次作业
    设计模式第一次作业
    项目选题报告(团队)
    高级软件工程结对第二次作业
    高级软件工程团队第一次作业
    高级软件工程结对第一次作业
    高级软件工程第二次作业
    高级软件工程第一次作业--准备
  • 原文地址:https://www.cnblogs.com/sumg/p/3743982.html
Copyright © 2011-2022 走看看