C#--串行化与反串行化
串行化是指存储和获取磁盘文件、内存或其他地方中的对象。在串行化时,所有的实例数据都保存到存储介质上,
在取消串行化时,对象会被还原,且不能与其原实例区别开来。只需给类添加Serializable属性,就可以实现串行化实
的成员。反串行化是串行化的逆过程,数据从存储介质中读取出来,并赋给类的实例变量。串行化能保存现有对象的所有状态,
我想我们以前见过的一些游戏的角色账户中的dat文件应该就是被串行化的结果。我尝试了打开一个dat文件,果真得到了
我需要的信息,一些角色的等级之类的信息果然在里面。
串行化对象,需要先将对象加上[Serializable],如:
[Serializable]
public class user{}
首先需要添加序列化命名空间:
using System.Runtime.Serialization.Formatters.Binary;
/// <summary>
/// 写入磁盘
/// </summary>
/// <param name="obj">实例对象</param>
/// <param name="file">保存的文件路径跟文件名称</param>
private static void WriteBinary(object obj, string file)
{ using (Stream input = File.OpenWrite(HttpContext.Current.Server.MapPath(file)))
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(input, obj);
}
}
/// <summary>
/// 读出磁盘文件
/// </summary>
/// <param name="file">保存的文件路径跟文件名称</param>
/// <returns>object对象</returns>
public static object ReadBinary(string file)
{
using (Stream outPut = File.OpenRead(HttpContext.Current.Server.MapPath(file)))
{
BinaryFormatter bf = new BinaryFormatter();
object user = bf.Deserialize(outPut);
if (user != null)
{
return user;
}
}
return null;
}
实例应用:
protected void Page_Load(object sender, EventArgs e)
{
//.dat文件,这种文件是纯文本,没有数据属性结构方面的信息,可以用记事本等文本工具打开
WriteBinary(new user()
{
id = 1,
title = "贵源网络",
url = "gzmsg.com",
co = "软件开发",
des="描述"
}, "~/upload/data/user.dat");
user user = ReadBinary("~/upload/data/user.dat") as user;
Response.Write(user.des); //描述
}
[Serializable]
public class user
{
public int id { get; set; }
public string title { get; set; }
public string url { get; set; }
public string co { get; set; }
public string des = string.Empty;
}
如果需要对部分字段序列化部分不序列化时,我们可以按照如下设置实现
[Serializable]
public class user
{
public int id { get; set; }
public string title { get; set; }
public string url { get; set; }
public string co { get; set; }
[NonSerialized]
public string des = string.Empty;
}
C#--串行化与反串行化的更多相关文章
- PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结
前 言 OOP 学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1 PHP中的抽象 ...
- Hadoop基础-Protocol Buffers串行化与反串行化
Hadoop基础-Protocol Buffers串行化与反串行化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们之前学习过很多种序列化文件格式,比如python中的pickl ...
- C#基础知识回顾--串行化与反串行化
串行化是指存储和获取磁盘文件.内存或其他地方中的对象.在串行化时,所有的实例数据都保存到存储介质上, 在取消串行化时,对象会被还原,且不能与其原实例区别开来.只需给类添加Serializable属性, ...
- Hadoop基础-Apache Avro串行化的与反串行化
Hadoop基础-Apache Avro串行化的与反串行化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Apache Avro简介 1>.Apache Avro的来源 ...
- vlc命令行: 转码 流化 推流
vlc命令行: 转码 流化 推流 写在命令行之前的话: VLC不仅仅可以通过界面进行播放,转码,流化,也可以通过命令行进行播放,转码和流化.还可以利用里面的SDK进行二次开发. vlc命令行使用方法: ...
- Androidstudio2.0.0汉化教程及汉化包。
()Eric为大家带来Androidstudio2.0.0的简单汉化教程,许多小伙伴喜欢使用中文版的AS那么没有中文的AS只能靠自己汉化取得更好的体验. 第一步下载AS2.0.0汉化包,我有链接给大家 ...
- hbase非结构化数据库与结构化数据库比较
目的:了解hbase与支持海量数据查询的特性以及实现方式 传统关系型数据库特点及局限 传统数据库事务性特别强,要求数据完整性及安全性,造成系统可用性以及伸缩性大打折扣.对于高并发的访问量,数据库性能不 ...
- QRowTable表格控件-支持hover整行、checked整行、指定列排序等
目录 一.开心一刻 二.嘴一嘴 三.效果展示 四.浅谈实现 五.自定义数据源 1.data函数 2.flags函数 六.自定义视图 1.目的 2.问题分析 七.测试 八.相关文章 原文链接:QRowT ...
- 深度学习面试题11:池化(same池化、valid池化、带深度的池化)
目录 Same最大值池化 多深度的same池化 Same平均值池化 Valid池化 参考资料 池化(Pooling)操作与卷积类似,取输入张量的每个位置的矩形领域内的最大值或平均值作为该位置的输出. ...
随机推荐
- Android笔记之属性动画
前言.动画分类 例如以下图所看到的,Android的动画主要分为三种: 以下首先说说 属性动画 所谓属性动画-- 就是指对象的属性值发生了变化,如控件位置和透明度等. 举例,如今要实现一个按键先下移. ...
- 基于设备树的TQ2440的中断(1)
作者 姓名:彭东林 E-mail:pengdonglin137@163.com QQ:405728433 平台 板子:TQ2440 内核:Linux-4.9 u-boot: 2015.04 工具链: ...
- C# 其他图片格式转emf
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- WordPress主题开发实例:查询单篇文章
xxx/?page_id=5 想在首页调用以上页面的内容怎么做呢? 完整: <?php //查询 $my_query = new WP_Query( 'page_id=5' ); if($my_ ...
- Git:一本书 + 一个站点,让你掌握 Git
一本书:<<Pro Git in Chinese>> 一个网站:http://pcottle.github.io/learnGitBranching/
- resin 4.0.xx 版破解方法
how to crack resin 4.0.2x resin 4.0.3x. 工具:jd http://jd.benow.ca/ 利用jd打开resin 4.0.xx目录下的lib/pro.jar ...
- 寂静之地百度云在线观看迅雷下载A Quiet Place高清BT下载
原名:A Quiet Place 地区:美国 语言:英语 / 美国手语 首播:2018-05-18(中国大陆) / 2018-03-09(西南偏南电影节) / 2018-04-06(美国) 电视台 ...
- 波士顿法律第一至五季/全集Boston Legal迅雷下载
本季第一至五季Boston Legal(2004-2008)看点:<波士顿法律>(Boston Legal)是讲述的是美国波士顿市一家律师事务所的故事,主要是两位活宝Alan(James ...
- HTML5 本地文件操作之FileSystemAPI简介
一.FileSystemAPI简介 HTML5的文件操作Api中 1.FileAPI,用于基础的客户端本地文件读取,目前大多数接口已经被主流浏览器支持,点击查看更多参考 2.FileSystemAPI ...
- Java NIO 的前生今世 之四 NIO Selector 详解
Selector Selector 允许一个单一的线程来操作多个 Channel. 如果我们的应用程序中使用了多个 Channel, 那么使用 Selector 很方便的实现这样的目的, 但是因为在一 ...