使用二进制格式化程序读取二进制文件的中间

时间:2016-12-11 15:55:25

标签: c# binaryfiles

我正在尝试使用二进制格式化程序将多个对象序列化为文件。

文件很大,所以如果我需要文件中间的特定对象,我不想反序列化整个文件来获取它。

有办法做到这一点吗?使用其他序列化程序?
我也可以在同一个地方更换物体吗?

1 个答案:

答案 0 :(得分:1)

TL; DR:

  • 决定是否需要联合/压缩文件
  • 不要自己实施这样的事情
  • 使用.NET的ZipFile类

当您以流的形式重新打开文件时,您可以使用流的Seek方法转到所需的位置(您必须记住某处),然后读出所需的位置字节数(您还必须记住,或用标记位标记文件的结尾)。修改文件也非常有趣。

不要这样做!你写的是一个糟糕的tar等价物,很多其他人已经做过,而且更好:

另请注意,.NET的二进制序列化不保证在以后的.NET版本中可读。它意味着瞬态而不是数据存档。这对您来说很重要,是另一件需要考虑的事情。

我不知道你对文件的处理方式;您可能不希望/需要这样做 - 您可能最好将磁盘上的内容存储为单个文件。如果压缩/存储作为单个文件实际上是你的事情,那么我建议从.NET的ZipFile类开始,因为你没有外部依赖。

相关问题