3

例如,如果我想删除文件中间的 10 个字节或在中间添加 10 个字节,是否有没有完全重写文件的方法?

我想要一个最快完成这项任务的解决方案。

我使用 C#,但解决方案可能也在 C 或 C++ 中。

4

3 回答 3

3

您必须复制整个文件,省略或插入相关字节。这是一个操作系统约束;由于文件在磁盘上的布局方式,根本不可能支持这种类型的操作(至少对于像 Unix 或 Windows 使用的简单文件系统)。

于 2013-09-12T15:15:06.447 回答
0

尝试使用MapViewOfFile的东西。可能有 C# 绑定。

然后,您可以将文件视为应该快速的内存。

于 2013-09-12T15:17:05.507 回答
0

如果你想在同一个地方删除并添加 ==> 修改/更新

以 r+ 模式打开文件,这将使您更改为可以执行的读写操作。然后

将文件流移动到要修改的位置,并在那里添加那么多字节,而无需删除 10 个字节。需要写10个字节。这将从当前位置覆盖十个字节。只是删除旧的十个字节并添加新的十个字节。

如果你想删除并且不想添加任何东西,然后复制到新文件,除了十个字节。

如果您只想添加,请将流位置移动到 end ,写入十个字节。

你需要fseek()

于 2013-09-12T15:22:03.857 回答