C# 对象持久化
发布时间:2020-12-16 01:14:05 所属栏目:百科 来源:网络整理
导读:本文以一个简单的小例子,简述对象持久化的相关知识,仅供学习分享使用,如有不足之处,还请指正。 概述 对象持久化是指将内存中的对象保存到可永久保存的存储设备中(如磁盘)的一种技术。 本文介绍的是除数据库之外的几种对象持久化方式。 具体如下: 保存
本文以一个简单的小例子,简述对象持久化的相关知识,仅供学习分享使用,如有不足之处,还请指正。 概述 对象持久化是指将内存中的对象保存到可永久保存的存储设备中(如磁盘)的一种技术。 本文介绍的是除数据库之外的几种对象持久化方式。 具体如下:
涉及知识点:
效果图 如下图所示【主要功能是将用户输入的信息保存成各种格式,并从各个文档中进行读取出来】: 核心代码 保存和读取文本文档代码如下: 1 /// <summary> 2 /// 保存成文本 3 </summary> 4 <param name="sender"></param> 5 <param name="e"></param> 6 private void btnSaveTxt_Click(object sender,EventArgs e) 7 { 8 Dictionary<string,string> dicInfos = GetDictionaryInfos(); 9 string filePath = "objPerson.txt"; 10 //采用using关键字,会自动释放 11 using (FileStream fs = new FileStream(filePath,FileMode.Create)) 12 { 13 using (StreamWriter sw = StreamWriter(fs,Encoding.Default)) 14 { 15 foreach (var keyPair in dicInfos) 16 { 17 sw.WriteLine(string.Format({0}={1},keyPair.Key,keyPair.Value)); 18 } 19 } 20 } 21 } 22 23 24 从文本中读取 25 26 27 28 void btnReadTxt_Click(29 30 31 Dictionary<string> dic = new Dictionary<string>(); 32 33 34 35 using (StreamReader sw = StreamReader(fs,1)">36 37 while (!sw.EndOfStream) { 38 string lineInfo = sw.ReadLine(); 39 dic.Add(lineInfo.Split('=')[0],lineInfo.Split(1]); 40 41 42 43 this.txtName.Text = dic[Name]; 44 this.dtBirthday.Text = dic[Birthday45 if (dic[Gender"] == this.rbBoy.Text) 46 47 this.rbBoy.Checked = true48 49 else { 50 this.rbGirl.Checked = 51 52 string[] loves = dic[Love"].Split(|'); 53 var love loves) 54 55 var item in .lsvLove.Items) 56 57 ListViewItem li = item as ListViewItem; 58 if (li.Text == love) 59 60 li.Checked = 61 62 63 64 } 保存和读取Xml文档代码如下: 1 保存成Xml void btnSaveXml_Click( 8 Person p = GetPersonInfos(); objPerson.xml11 12 XmlSerializer serializer = new XmlSerializer(typeof(Person)); 13 serializer.Serialize(fs,p); 15 16 17 18 从Xml中读取 19 20 21 22 void btnReadXml_Click(23 24 25 Person p; 26 27 28 XmlSerializer serializer = 29 object obj= serializer.Deserialize(fs); 30 p = obj Person; 31 32 SetPersonInfos(p); 33 } 保存和读取Json文档如下: 1 保存成Json void btnSaveJson_Click( 9 JavaScriptSerializer jserializer = JavaScriptSerializer(); string strJson = jserializer.Serialize(p); string strRegex = @"/Date((d+))/12 MatchEvaluator evaluator = MatchEvaluator(ConvertJsonDateToDateString); 13 14 对时间进行处理,需要引用System.Text.RegularExpressions;命名空间 15 Regex reg = Regex(strRegex); 16 strJson = reg.Replace(strJson,evaluator); 17 18 objPerson.json19 21 22 sw.Write(strJson); 24 26 27 28 29 从Json中读取 30 31 32 33 void btnReadJson_Click(35 JavaScriptSerializer jserializer = 36 37 38 39 40 42 sw.ReadToEnd(); 43 string strRegex = d{4}-d{2}-d{2}sd{2}:d{2}:d{2}44 MatchEvaluator evaluator = new MatchEvaluator(ConvertDateStringToJsonDate); 对时间进行处理 45 Regex reg = 46 strJson =47 p = jserializer.Deserialize<Person>(strJson); 49 50 51 } 保存和读取Bin文档如下: 保存成二进制文件 void btnSaveBin_Click(objPerson.bin11 BinaryFormatter bf = BinaryFormatter(); bf.Serialize(fs,1)">15 16 读取二进制文件 21 void btnReadBin_Click(23 25 27 BinaryFormatter bf = 28 p= bf.Deserialize(fs) 30 31 }
其实对象持久化和对象序列化是两个不同的概念。两者有关联却不同。 对象持久化:是使对象可以保存到实体存储介质中,在对象生命周期结束后可以再现。 对象序列化:是将对象或者数据结构转化成特定的格式,使其可在网络中传输,或者可存储在内存或者文件中。 ?源码下载链接 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |