C#利用序列化实现导出非明文数据文件

在做项目中,因为有一个要把项目数据导出到非明文的文件中作备份使用。
在对比多种方法之后,发现用序列化实现是代码量最少,速度也很快。
在分享方法之前先了解一下序列化:
序列化是将一个对象转换成字节流以达到将其长期保存在内存、数据库或文件中的处理过程。它的主要目的是保存对象的状态以便以后需要的时候使用。与其相反的过程叫做反序列化。
序列化的类型
• 二进制(流)序列化
• SOAP序列化
• XML序列化
因为项目中只用到二进制流序列化,所以简单介绍一下怎么用。其他序列化可以自行百度。
首先。要想把一个对象序列化,那个对象前面必须加[Serializable]类特性,表示该类可被序列化,
该类的所以类成员都会被序列化,如果不想某些类成员被序列化,那么在类成员加[NonSerializable]
特性即可
想使用二进制序列化必须引用System.Runtime.Serialization.Formatters.Binary命名空间
下面是具体操作:

  1. 封装一个存储数据的类对象,

[Serializable] //可序列化
public class Binaryout
{
private string Fixed_Assets_Code { get; set; }
private string Capital_assets_Code { get; set; }
private string Class_Code { get; set; }
private string Place_Code { get; set; }
private string Department_Code { get; set; }
private string Procurement_Date { get; set; }
private string Manufacture { get; set; } }

然后给每个类成员加上get 和set方法

  1. 给类对象的成员添加数据
List<Binaryout> lb = new List<Binaryout>();
for (int i = 0; i < dataGridViewX8.RowCount; i++)
{
Binaryout by = new Binaryout();
by.setFixed_Assets_Code(dataGridViewX8.Rows[i].Cells["Fixed_Assets_Code"].Value.ToString());
by.setCapital_assets_Code(dataGridViewX8.Rows[i].Cells["Capital_assets_Code_G"].Value.ToString());
by.setClass_Code(dataGridViewX8.Rows[i].Cells["Class_Code_G"].Value.ToString());
by.setPlace_Code(dataGridViewX8.Rows[i].Cells["Place_Code_G"].Value.ToString());
by.setDepartment_Code(dataGridViewX8.Rows[i].Cells["Department_Code_G"].Value.ToString());
by.setProcurement_Date(dataGridViewX8.Rows[i].Cells["Procurement_Date"].Value.ToString());
by.setManufacture(dataGridViewX8.Rows[i].Cells["Manufacture"].Value.ToString());
lb.Add(by);
}
  1. 序列化类对象

string fileName= " C:\Users\Administrator\Desktop
\固定资产数据备份(Binary)" + DateTime.Now.ToString(“yyyyMMddHHmmss”)+ “.bas”;
FileStream fs = null;
try
{
fs = File.Create(ss);//创建
BinaryFormatter bf = new BinaryFormatter(); //二进制序列化
bf.Serialize(fs, lb);
fs.Close();
MessageBox.Show(“导出成功!文件名称为:”+ fileName);
}
catch
{
MessageBox.Show(“导出失败!”);
}

二进制序列化是实例化BinaryFormatter类,Serialize方法是序列化,参数1是要序列化的目标流,参数2是序列化对象。
上面操作就可以将对象进行序列化了,但是由于项目需求是非明文,总所周知,编码一般对数字不会进行编码,
所以我们在对上面类对象添加数据的时候,可以对数据进行加密处理,等下面拿出来在解码显示。这样就实现了导出非明文文件。
下面是项目中导出的非明文文件,把文件后缀名改为txt文件,显示如下图
在这里插入图片描述
虽然项目中有很多数字信息,但是加密过后已经完全看不出内容了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值