如何快速复制二进制文件的一部分?

时间:2012-10-30 06:49:18

标签: c# binaryfiles binary-data

我需要在二进制文件中间做一些操作(更改字符串值,布尔值或int32)并保留其他所有内容。如何在不处理每个二进制对象的情况下快速跳过我不需要使用的项目并获得我需要的内容(有很多这样的对象并且它很慢)?

2 个答案:

答案 0 :(得分:1)

这完全取决于文件的结构。实际上,您是否可以更改值将取决于文件的结构 - 如果您需要进行更改以使文件变大或变小,您可能需要创建一个新文件,因为你不能只从文件中间插入或删除字节。

如果您的文件具有固定长度的记录格式,您可以通过搜索来跳到正确的位置,例如使用Stream.Position属性。如果您的文件没有具有固定长度格式,则可能需要完全处理所有内容。存在“中间”可能性,其中每个记录都有长度前缀:您不需要实际处理所有内容,但您仍需要读取每个记录的标题,以跳过它。

答案 1 :(得分:0)

Stream中有一个Seek函数,也许你可能只是寻找你想要改变的位置,然后使用Write方法修改文件?但是,如果您需要在中间添加字节而不是仅仅替换它们,则可能会遇到问题 - 在这种情况下,您需要重写文件的其余部分(以便抵消现有内容)。

相关问题