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

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.Serialization;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.IO;
    namespace BinarySerializableExample
    {
        [Serializable]//序列化
            //序列化的两个功能是:1:将对象的状态存储在媒体中,便于创建对象的精确的副本
            //2.通过值将对象从一个应用程序传送到另一个应用程序
        public class AuthUserEntry
        {
            private int accountId;
            private string accountName;
            public int AccountId
            {
                get
                {
                    return accountId;
                }
                set
                {
                    accountId = value;
                }
            }
            public string AccountName
            {
                get
                {
                    return accountName;
                }
                set
                {
                    accountName = value;
                }
            }
        }

        class Program
        {
            static void Main(string[] args)
            {
                AuthUserEntry ate = new AuthUserEntry();
                ate.AccountId = 21;
                ate.AccountName = "LiangShuai";
                IFormatter formatter = new BinaryFormatter();//序列化到一个二进制的文件.bin中
                Stream stream = new FileStream("UserInfo.bin",FileMode.Create,FileAccess.Write,FileShare.None);
                formatter.Serialize(stream,ate);
                stream.Close();
                //反序列化时要首先创建用于读取的流和格式化接口,然后用格式化接口反序列化该对象
                stream = new FileStream("UserInfo.bin",FileMode.Open,FileAccess.Read,FileShare.Read);
                AuthUserEntry auth = (AuthUserEntry)formatter.Deserialize(stream);
                stream.Close();
                Console.WriteLine("ID is{0}",auth.AccountId);
                Console.WriteLine("Name is {0}",auth.AccountName);
                Console.ReadKey();

            }
        }
    }

    未经许可禁止转载本博客内容
  • 相关阅读:
    Qt QString判断是否是数字
    Qt 判断QString中的字符串是否为纯数字
    Qt delete和deletelater的区别
    Qt QTcpSocket waitForReadyRead()等函数用法——客户端开关读写应用笔记
    Notepad++对比两个文件不同的方法
    Qt error C1071 :在注释中遇到意外的文件结束
    Qt error C2601: “...”: 本地函数定义是非法的
    Qt 错误 C1071 在注释中遇到意外的文件结束 的解决办法
    Qt 串口和线程的简单结合(通过子线程操作串口、movetothread)
    Qt 实现多线程的串口通信
  • 原文地址:https://www.cnblogs.com/liangshuai/p/2229281.html
Copyright © 2011-2022 走看看