使用二进制格式读取二进制文件中间



我正在尝试使用二进制格式化器将几个对象序列化到一个文件中。

文件很大,因此,如果我需要从文件中间来的特定对象

有办法做到这一点吗?使用另一个序列化器?
我还可以在同一地点更改对象吗?

tl; dr:

  • 确定您是否需要完全连接/压缩文件
  • 不要自己实施这样的东西
  • 使用.NET的Zipfile类

当您将文件重新打开作为流时,您可以使用流的寻求方法进入所需位置(您必须在某个地方记住它),然后读取所需的字节数(您'd还必须记住,或用标记位标记文件的末尾)。修改文件也很有趣。

不要这样做!您会写一个不良的焦油等效物,并且许多其他人已经做到了,而且更好:

  • SharpCompress
  • Sharpziplib
  • .NET自己的Zipfile

还要注意,在以后的.NET版本中,不能保证.NET的二进制序列化。它是用于瞬态事物而不是数据档案。这对您可能很重要,并且要考虑的另一件事。

我不知道您如何处理这些文件;您可能不想/需要这样做 - 您可能会更好地将这些内容存储在磁盘上作为单个文件。如果压缩/存储作为一个文件实际上是您的事,那么我建议您从.NET的Zipfile类开始,因为您没有外部依赖关系。

最新更新