繁体   English   中英

从二进制文件中消除数据

[英]Eliminate Data from a Binary File

我有一个BinaryReader / BinaryWriter,其长度为1000字节,每条记录为50字节。 如何消除位置350到550处的记录,最后将剩余的800个字节保留在文件中?

最简单的方法是遍历记录,从一个文件读取并写入新文件,并消除不需要的记录。

从理论上讲,您可以在同一文件中查找,用新数据覆盖“旧”数据,但是我个人会尽可能寻求一种简单的方法。 这也意味着,如果一切都失败了,您仍然会得到原始文件和可以删除的“坏”文件,而不是可能包含两次记录的文件。

您必须从位置550读取数据到文件末尾,并将其写入位置350。

如果使用FileStream,则可以执行该操作。 使用BinaryReader和BinaryWriter,您将必须读取文件中的所有数据并写回要保留的数据。 对于这么小的文件,您可以将所有数据保留在内存中,但是对于更大的文件,您将写入一个临时文件,并在完成后让其替换原始文件。

写入临时文件也是将丢失数据的风险降至最低的一个好主意。 如果操作中的任何时刻出了问题,则磁盘上至少会保留一个完整的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM