php 对象持久化,C# 对象持久化图文代码详解

本文介绍的是除数据库之外的几种对象持久化方式。具有很好的参考价值,下面跟着小编一起来看下吧

对象持久化是指将内存中的对象保存到可永久保存的存储设备中(如磁盘)的一种技术。

本文介绍的是除数据库之外的几种对象持久化方式。

具体如下:保存成文本:即将内存对象以字节流的方式保存到文本中。

序列化成Xml:即将对象以Xml的格式存储。

序列化成Json:即将对象序列化成Json对象,然后存储。

序列化成二进制:即将对象序列化成二进制字节流保存到文件中。

涉及知识点:序列化与反序列化

文件流的读写

ListView显示复选框,并横向排列

如下图所示【主要功能是将用户输入的信息保存成各种格式,并从各个文档中进行读取出来】:

338ea55fed6eba56f6a0721ef412d6f7.png

保存和读取文本文档代码如下:

///

/// 保存成文本

///

///

///

private void btnSaveTxt_Click(object sender, EventArgs e)

{

Dictionary dicInfos = GetDictionaryInfos();

string filePath = "objPerson.txt";

//采用using关键字,会自动释放

using (FileStream fs = new FileStream(filePath, FileMode.Create))

{

using (StreamWriter sw = new StreamWriter(fs, Encoding.Default))

{

foreach (var keyPair in dicInfos)

{

sw.WriteLine(string.Format("{0}={1}", keyPair.Key, keyPair.Value));

}

}

}

}

///

/// 从文本中读取

///

///

///

private void btnReadTxt_Click(object sender, EventArgs e)

{

string filePath = "objPerson.txt";

Dictionary dic = new Dictionary();

//采用using关键字,会自动释放

using (FileStream fs = new FileStream(filePath, FileMode.Open))

{

using (StreamReader sw = new StreamReader(fs, Encoding.Default))

{

while (!sw.EndOfStream) {

string lineInfo = sw.ReadLine();

dic.Add(lineInfo.Split('=')[0], lineInfo.Split('=')[1]);

}

}

}

this.txtName.Text = dic["Name"];

this.dtBirthday.Text = dic["Birthday"];

if (dic["Gender"] == this.rbBoy.Text)

{

this.rbBoy.Checked = true;

}

else {

this.rbGirl.Checked = true;

}

string[] loves = dic["Love"].Split('|');

foreach (var love in loves)

{

foreach (var item in this.lsvLove.Items)

{

ListViewItem li = item as ListViewItem;

if (li.Text == love)

{

li.Checked = true;

}

}

}

}

保存和读取Xml文档代码如下:

///

/// 保存成Xml

///

///

///

private void btnSaveXml_Click(object sender, EventArgs e)

{

Person p = GetPersonInfos();

string filePath = "objPerson.xml";

using (FileStream fs = new FileStream(filePath, FileMode.Create))

{

XmlSerializer serializer = new XmlSerializer(typeof(Person));

serializer.Serialize(fs, p);

}

}

///

/// 从Xml中读取

///

///

///

private void btnReadXml_Click(object sender, EventArgs e)

{

string filePath = "objPerson.xml";

Person p;

using (FileStream fs = new FileStream(filePath, FileMode.Open))

{

XmlSerializer serializer = new XmlSerializer(typeof(Person));

object obj= serializer.Deserialize(fs);

p = obj as Person;

}

SetPersonInfos(p);

}

保存和读取Json文档如下:

///

/// 保存成Json

///

///

///

private void btnSaveJson_Click(object sender, EventArgs e)

{

Person p = GetPersonInfos();

JavaScriptSerializer jserializer = new JavaScriptSerializer();

string strJson = jserializer.Serialize(p);

string strRegex = @"\\/Date\((\d+)\)\\/";

MatchEvaluator evaluator = new MatchEvaluator(ConvertJsonDateToDateString);

//对时间进行处理,需要引用System.Text.RegularExpressions;命名空间

Regex reg = new Regex(strRegex);

strJson = reg.Replace(strJson, evaluator);

string filePath = "objPerson.json";

using (FileStream fs = new FileStream(filePath, FileMode.Create))

{

using (StreamWriter sw = new StreamWriter(fs, Encoding.Default))

{

sw.Write(strJson);

}

}

}

///

/// 从Json中读取

///

///

///

private void btnReadJson_Click(object sender, EventArgs e)

{

JavaScriptSerializer jserializer = new JavaScriptSerializer();

string filePath = "objPerson.json";

Person p;

using (FileStream fs = new FileStream(filePath, FileMode.Open))

{

using (StreamReader sw = new StreamReader(fs, Encoding.Default))

{

string strJson = sw.ReadToEnd();

string strRegex = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";

MatchEvaluator evaluator = new MatchEvaluator(ConvertDateStringToJsonDate); //对时间进行处理

Regex reg = new Regex(strRegex);

strJson = reg.Replace(strJson, evaluator);

p = jserializer.Deserialize(strJson);

}

}

SetPersonInfos(p);

}

保存和读取Bin文档如下:

///

/// 保存成二进制文件

///

///

///

private void btnSaveBin_Click(object sender, EventArgs e)

{

Person p = GetPersonInfos();

string filePath = "objPerson.bin";

using (FileStream fs = new FileStream(filePath, FileMode.Create)) {

BinaryFormatter bf = new BinaryFormatter();

bf.Serialize(fs, p);

}

}

///

/// 读取二进制文件

///

///

///

private void btnReadBin_Click(object sender, EventArgs e)

{

string filePath = "objPerson.bin";

Person p;

using (FileStream fs = new FileStream(filePath, FileMode.Open))

{

BinaryFormatter bf = new BinaryFormatter();

p= bf.Deserialize(fs) as Person;

}

SetPersonInfos(p);

}

备注:其实对象持久化和对象序列化是两个不同的概念。两者有关联却不同。

对象持久化:是使对象可以保存到实体存储介质中,在对象生命周期结束后可以再现。

对象序列化:是将对象或者数据结构转化成特定的格式,使其可在网络中传输,或者可存储在内存或者文件中。

以上就是C# 对象持久化图文代码详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值