C# 类序列化为文件,文件反序列化为类(二进制)

(1)添加引用

(2)在将要序列化的类中引用 using ProtoBuf; 并且在类之前添加字段 [Serializable] 变量之前添加字段 ProtoMember 效果如下所示:

 1 using System;
 2 using ProtoBuf;
 3 using System.Collections.Generic;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7
 8 namespace eaa
 9 {
10     [Serializable]  // 提示该类可序列化
11     [ProtoContract]
12     public class Company
13     {
14         [ProtoMember(1)]
15         public string Name;
16         [ProtoMember(2)]
17         public string isComplete;
18         [ProtoMember(3)]
19         public List<Comment> comment = new List<Comment>();
20     }
21     [Serializable]  // 提示该类可序列化
22     [ProtoContract]
23     public class Comment
24     {
25         [ProtoMember(1)]
26         public string time;
27         [ProtoMember(2)]
28         public string comment;
29         [ProtoMember(3)]
30         public string verifier;
31         [ProtoMember(4)]
32         public string complete;
33     }
34 }

(3)建立方法用于将类序列化并保存为二进制文件

 1         /// <summary>
 2         /// 将类序列化并保存成文件
 3         /// </summary>
 4         /// <param name="filePath"></param>
 5         /// <param name="outputData"></param>
 6         /// <returns></returns>
 7         public static bool SerializetoFile(string filePath, Dictionary<string, Company> outputData)
 8         {
 9             try
10             {
11                 FileStream fs = new FileStream(filePath, FileMode.Create);
12                 BinaryFormatter bf = new BinaryFormatter();
13                 bf.Serialize(fs, outputData);
14                 fs.Close();
15                 return true;
16             }
17             catch (Exception ex)
18             {
19                 Console.WriteLine(ex.Message);  // 打印错误日志
20                 return false;
21             }
22         }

(4)建立方法用于将二进制文件反序列化为对应的类

 1         /// <summary>
 2         /// 将文件反序列化为类
 3         /// </summary>
 4         /// <param name="filePath"></param>
 5         /// <returns></returns>
 6         public static bool FiletoSerialize(ref Dictionary<string, Company> inputData,string filePath)
 7         {
 8             try
 9             {
10                 FileStream fs = new FileStream(filePath, FileMode.Open);
11                 BinaryFormatter bf = new BinaryFormatter();
12                 inputData = bf.Deserialize(fs) as Dictionary<string, Company>;
13                 fs.Close();
14                 return true;
15             }
16             catch (Exception ex)
17             {
18                 Console.WriteLine(ex.Message);  // 打印错误日志
19                 return false;
20             }
21         }

原文地址:https://www.cnblogs.com/lijinying/p/12681048.html

时间: 2024-08-04 06:06:07

C# 类序列化为文件,文件反序列化为类(二进制)的相关文章

JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象 。

JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对象.要添加System.Web.Extensions.dll的引用.该类位于System.Web.Script.Serialization命名空间下. 一.属性 MaxJsonLength 获取或设置 JavaScriptSerializer 类接受的 JSON 字符串的最大长度. Recursio

JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象

JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对象.要添加System.Web.Extensions.dll的引用.该类位于System.Web.Script.Serialization命名空间下. 一.属性 MaxJsonLength 获取或设置 JavaScriptSerializer 类接受的 JSON 字符串的最大长度. Recursio

使用pyinstaller把Python程序转化为exe文件

在实际应用中,有时候我们需要把python程序转化为exe文件,以方便使用 首先,使用pip直接安装pyinstaller,几乎一键安装,非常方便. 安装好以后,cd 定位到安装路径下,pyinsytanller -v即可查看pyinstaller的版本,如果不希望每次把需要转化的文件拷贝到安装路径或者输入一大串的路径,最好是只环境变量吧. 下面是一些简单的使用. --onefile         制作独立的可执行程序 --onedir         制作出的档案存放在同一个文件夹下(默认值

php学习笔记之将word文档转化为HTML文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

PHP将数据库内容转化为csv文件

PHP将数据库内容转化为csv文件,以逗号隔开,为防止数据库内容中含有逗号,影响文件内容显示,需注意添加""(双引号)!!! <?php include "init.php"; $file_name_='file.csv'; $str_content_="aid,username,password,role,status,created_time,updated_time\n"; file_put_contents($file_name_,

将caj文件转化为pdf文件进行全文下载脚本(ubuntu下亲测有用)

最近ubuntu下caj阅读器,突然崩掉了,而偏偏要准备开题,在网上搜索原因未果,准备放弃时候,突然在网上看到一个脚本,说是很好用,可以在指定页面将caj文件转化为pdf文件,亲测有用,这里直接给出脚本链接和安装方式,,甚是感谢 原文地址:https://www.cnblogs.com/ilym/p/8588235.html

序列化工具类({对实体Bean进行序列化操作.},{将字节数组反序列化为实体Bean.})

package com.dsj.gdbd.utils.serialize; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; /** * * @作用:序列化工具类 * @功能: * @作者: wyt * @

jupyter命令把.ipynb文件转化为.py文件

jupyter nbconvert --to script *.ipynb 就能把当前文件夹下面的所有的.ipynb文件转化为.py文件 原文地址:https://www.cnblogs.com/xinmomoyan/p/10700041.html

Netlib文件转化为mps文件

Netlib文件转化为mps文件 下载地址 建立emps.c文件内容如下 /* Expand compressed LP programs (in netlib format) to MPS format. * This is similar to the Fortran program emps.f , except that it * understands command-line arguments, including the -m option, * which causes "my