博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对象序列化和反序列化
阅读量:4625 次
发布时间:2019-06-09

本文共 2298 字,大约阅读时间需要 7 分钟。

C#提供三种序列化的方法,与此有关的三个类分别是:BinarySerialize、SoapSerialize、XmlSerialize

以二进制的序列化和反序列化为例,先创建一个实体类Product。

1  [Serializable] 2     public class Product 3     { 4         public int id; 5         public string name; 6         public double price; 7         [NonSerialized] 8         public string notes; 9         public Product(int Id, string Name, double Price, string Notes) 10         {11             id = Id;12             name = Name;13             price = Price;14             notes = Notes;15         }16 17         public override string ToString()18         {19             return string.Format("This product's id is{0},name is{1},price is{2}.", id, name, price, notes);20         }
View Code

重新ToString方法以便打印实体。

给实体赋值,在进行的序列化和反序列化之前进行都进行文件的压缩与解压,用的是GZipStream

List
productList = new List
{ new Product(1, "orange", 1.0, "sales"), new Product(2, "Apple", 2.0, "cheap") }; foreach(Product product in productList) { Console.WriteLine(product); } Console.WriteLine("Please select your file"); FileStream fs = new FileStream("Product.ini", FileMode.Create, FileAccess.ReadWrite); GZipStream gzCompressed = new GZipStream(fs, CompressionMode.Compress); try { IFormatter serialize = new BinaryFormatter(); serialize.Serialize(gzCompressed, productList); gzCompressed.Close(); FileStream fsRead = new FileStream("Product.ini", FileMode.Open, FileAccess.Read); GZipStream gzDecompressed = new GZipStream(fsRead, CompressionMode.Decompress); List
deProductList = serialize.Deserialize(gzDecompressed) as List
; gzDecompressed.Close(); foreach (Product product in deProductList) { Console.WriteLine(product); } } catch (SerializationException se) { Console.WriteLine(se.Message); } catch(IOException io) { Console.WriteLine(io.ToString()); } Console.ReadKey();

 

转载于:https://www.cnblogs.com/simen-tan/p/5376327.html

你可能感兴趣的文章
Windows Phone 7中使用PhoneApplicationService类保存应用程序状态
查看>>
MySql数据库的下载和安装卸载
查看>>
JDBC接口核心的API
查看>>
双缓冲技术局部更新原理之派生自View
查看>>
PPAPI插件与浏览器的通信
查看>>
用 query 方法 获得xml 节点的值
查看>>
Hello,Android
查看>>
Sublime Text 3 build 3103 注册码
查看>>
删与改
查看>>
SAP 中如何寻找增强
查看>>
spi驱动无法建立spidev问题
查看>>
ANDROID开发之SQLite详解
查看>>
PHP之时间函数
查看>>
Python open()完整参数
查看>>
django里面DTL使用for循环时,获取当前循环次数使用{{forloop.counter}}
查看>>
Java基础——Java集合(二)
查看>>
详解如何让Android UI设计性能更高效
查看>>
使用KNN算法对鸢尾花数据集进行分类处理
查看>>
java排序-按照实体的多种属性值进行排序(ComparableComparator/ComparatorChain)
查看>>
Django模板语言
查看>>