C#序列化/反序列化对象.将对象写入文件,从文件读取对象.
C#序列化/反序列化对象.将对象写入文件,从文件读取对象.
C#序列化/反序列化对象.将对象写入文件,从文件读取对象. using System; using System.Collections.Generic; using System.Text; using System.Runtime.Serialization.Formatters.Binary; using System.IO; using System.IO.Compression; using System.Windows.Forms; namespace Vjsdn_Tester { public class TestZipObject { /// <summary> /// 测试简单序列化/反序列化对象 /// </summary> public void Test() { SerilizabledObject obj = new SerilizabledObject(); byte[] bs = ZipObject.CompressionObject(obj); object o = ZipObject.DecompressionObject(bs); //还原,ok MessageBox.Show((o as SerilizabledObject).getName()); } /// <summary> /// 序列化对象,将对象写入文件,然后还原. /// </summary> public void TestReadWriteFile() { SerilizabledObject obj = new SerilizabledObject(); byte[] bs = ZipObject.CompressionObject(obj); //将数组写入文件 Stream writer = new FileStream("E:\\test.shape", FileMode.Create, FileAccess.Write, FileShare.Write); writer.Write(bs, 0, bs.Length); writer.Flush(); writer.Close(); //读取文件,先写入数组,再从数组转换为对象.Easy! FileStream fs = File.Open("E:\\test.shape", FileMode.Open); byte[] bss = new byte[fs.Length]; int i = fs.Read(bss, 0, (int)fs.Length); object o = ZipObject.DecompressionObject(bss); //还原,ok MessageBox.Show((o as SerilizabledObject).getName()); } } /// <summary> /// 测试用对象 /// </summary> [Serializable] public class SerilizabledObject { string id = "id001"; string name = "www.vjsdn.com"; public SerilizabledObject() { } public string getName() { return this.name; } } /// <summary> /// 压缩解压object /// </summary> public class ZipObject { #region 压缩解压object public static byte[] CompressionObject(object DataOriginal) { if (DataOriginal == null) return null; BinaryFormatter bFormatter = new BinaryFormatter(); MemoryStream mStream = new MemoryStream(); bFormatter.Serialize(mStream, DataOriginal); byte[] bytes = mStream.ToArray(); MemoryStream oStream = new MemoryStream(); DeflateStream zipStream = new DeflateStream(oStream, CompressionMode.Compress); zipStream.Write(bytes, 0, bytes.Length); zipStream.Flush(); zipStream.Close(); return oStream.ToArray(); } public static object DecompressionObject(byte[] bytes) { if (bytes == null) return null; MemoryStream mStream = new MemoryStream(bytes); mStream.Seek(0, SeekOrigin.Begin); DeflateStream unZipStream = new DeflateStream(mStream, CompressionMode.Decompress, true); object dsResult = null; BinaryFormatter bFormatter = new BinaryFormatter(); dsResult = (object)bFormatter.Deserialize(unZipStream); return dsResult; } #endregion } } 测试代码: private void button7_Click(object sender, EventArgs e) { new TestZipObject().Test(); // 测试简单序列化/反序列化对象 new TestZipObject().TestReadWriteFile(); // 序列化对象,将对象写入文件,然后还原. }
参考文档:
文件或目录的长文件名与短文件名互转换类C#.Net C#.Net 持久化对象为XML文件 C#使用分词算法从文本字符串中抽取关键词模拟百度搜索|CSFramework.COM巨献 C#使用StreamWriter在大文本文件末尾添加一行内容 C#持久化对象为XML文件(MyXmlSerializer) C#获取文件的编码格式(UTF-8/UNICODE/ASCII) C#.NET iTextSharp生成PDF文件源码大全(生成表格、透明水印,页脚页眉页码等) C#使用Multipart form-data方式上传文件及提交其他数据 C# LINQ使用Distinct方法检查对象某个属性的值是否重复 C# Model对象实例转换为URL网址参数Param形式 C#根据字节数据byte[]前2位判断文本文件的Encoding编码格式 C#获取文本文件的编码格式Encoding,自动区分GB2312和UTF8 CSFramework代码生成器根据数据库表结构生成实体对象模型(C#代码) 编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root DataSetExtension - C# DataSet对象持久化到本地文件
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |