我正在尝试使用二进制格式化程序将多个对象序列化为文件。
文件很大,所以如果我需要文件中间的特定对象,我不想反序列化整个文件来获取它。
有办法做到这一点吗?使用其他序列化程序?
我也可以在同一个地方更换物体吗?
答案 0 :(得分:1)
TL; DR:
当您以流的形式重新打开文件时,您可以使用流的Seek方法转到所需的位置(您必须记住某处),然后读出所需的位置字节数(您还必须记住,或用标记位标记文件的结尾)。修改文件也非常有趣。
不要这样做!你写的是一个糟糕的tar等价物,很多其他人已经做过,而且更好:
另请注意,.NET的二进制序列化不保证在以后的.NET版本中可读。它意味着瞬态而不是数据存档。这对您来说很重要,是另一件需要考虑的事情。
我不知道你对文件的处理方式;您可能不希望/需要这样做 - 您可能最好将磁盘上的内容存储为单个文件。如果压缩/存储作为单个文件实际上是你的事情,那么我建议从.NET的ZipFile类开始,因为你没有外部依赖。