消除二进制文件中的数据

时间:2012-02-21 17:52:47

标签: c# binaryfiles

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

2 个答案:

答案 0 :(得分:2)

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

理论上你可以在同一个文件中搜索,用新数据覆盖“旧”数据,但我个人会尽可能采用一种简单的方法。这也意味着如果有任何事情失败,你仍然会得到原始文件和一个可以删除的“坏”文件,而不是一个可能包含两次记录的文件。

答案 1 :(得分:1)

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

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

写入临时文件也是一个好主意,可以最大程度地降低丢失数据的风险。如果操作中的任何一点出现问题,您将至少在磁盘上留下一个完整的文件。