Protobuf对象写入文件与从文件读取的工具

前提需要安装Protobuf。

工具代码:

 1 using System;
 2 using System.IO;
 3 
 4 public class ProtobufTool
 5 {
 6     #region Protobuff序列化
 7 
 8     public static int SerializeProtobuf(object obj, string filePath)
 9     {
10         using (MemoryStream ms = new MemoryStream())
11         {
12             ms.Seek(0, SeekOrigin.Begin);
13             ms.SetLength(0);
14             //TODO需要安装ProtoBuf
15             //ProtoBuf.Serializer.Serialize(ms, obj);
16             ms.Seek(0, SeekOrigin.Begin);
17             int totalDataLen = (int)ms.Length;
18             if (totalDataLen > 0)
19             {
20                 using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
21                 {
22                     fileStream.Write(ms.GetBuffer(), 0, totalDataLen);
23                 }
24             }
25         }
26         return 0;
27     }
28 
29     public static object DeSerializeProtobuf(string filePath, Type type)
30     {
31         using (FileStream fileStream = File.Open(filePath, FileMode.Open, FileAccess.Read))
32         {
33             if (null != fileStream)
34             {
35                 fileStream.Seek(0, SeekOrigin.Begin);
36                 using (MemoryStream ms = new MemoryStream())
37                 {
38                     ms.SetLength(fileStream.Length);
39                     fileStream.Read(ms.GetBuffer(), 0, (int)fileStream.Length);
40                     //TODO需要安装ProtoBuf
41                     object obj = null;// ProtoBuf.Serializer.DeSerialize(type, ms);
42                     ms.Flush();
43                     return obj;
44                 }
45             }
46         }
47         return null;
48     }
49 
50     #endregion
51 }
原文地址:https://www.cnblogs.com/luguoshuai/p/13226545.html