c# - C# 中包含 1000 条记录的二进制文件格式

标签 c# .net binary binaryfiles binaryformatter

我希望将数组模型对象序列化为二进制流。模型类将主要具有字符串和整数属性。

我相信我可以将类标记为 [Serializable] 并使用二进制格式化程序,但是我很想知道您是否认为这是最好的方法,因为我的首要任务是拥有尽可能小的文件可以通过低带宽连接进行传输(我也可以压缩/解压缩文件)。

该文件可能有 1000 条记录,因此理想情况下,我希望能够追加到磁盘并逐条记录地从磁盘读取,而不必一次将整个文件放入内存。

所以我的首要任务是:小文件大小和高效内存使用。

也许有一个预先编写的框架?使用 XML 和 CSV 文件似乎很容易!希望它也具有自定义二进制格式。

谢谢

最佳答案

我建议 protobuf.net这是非常有效的。

话虽如此,这将无法处理集合中单个对象的序列化/反序列化。您需要自己实现的那一部分。

  • 一个解决方案是:将对象作为单个文件存储在文件夹中。文件名将包含一个引用,以便您可以根据名称找到所需的对象。

  • 另一种方法是拥有一个文件,但保留一个索引文件,该文件保留所有对象及其在文件中的位置的列表。这要复杂得多,因为当您保存文件中间的对象时,您必须移动所有其他地址,也许 b 树更有效。

关于c# - C# 中包含 1000 条记录的二进制文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5354238/

相关文章:

c# - 如何检查程序集是使用调试还是发布配置构建的?

c# - 使用c#从Mysql表中检索数据

.net - 当达到 WCF 连接的最大数量时会发生什么?

c# - 在单独的程序集中使用受约束的通用扩展方法会产生引用错误

C# 函数返回两个值

c# - 如何计算给定 2 个字符串的距离相似性度量?

c# - 基于 REST 的 WCF 身份验证

node.js - 在 Node.js 中将二进制字符串转换为缓冲区

binary - 为 Stata 中的所有变量重新编码相同的值模式

.Net 序列化 - 将 [Serializable] 与继承树中的自定义混合