例如,如果我想删除文件中间的 10 个字节或在中间添加 10 个字节,是否有没有完全重写文件的方法?
我想要一个最快完成这项任务的解决方案。
我使用 C#,但解决方案可能也在 C 或 C++ 中。
您必须复制整个文件,省略或插入相关字节。这是一个操作系统约束;由于文件在磁盘上的布局方式,根本不可能支持这种类型的操作(至少对于像 Unix 或 Windows 使用的简单文件系统)。
尝试使用MapViewOfFile的东西。可能有 C# 绑定。
然后,您可以将文件视为应该快速的内存。
如果你想在同一个地方删除并添加 ==> 修改/更新
以 r+ 模式打开文件,这将使您更改为可以执行的读写操作。然后
将文件流移动到要修改的位置,并在那里添加那么多字节,而无需删除 10 个字节。需要写10个字节。这将从当前位置覆盖十个字节。只是删除旧的十个字节并添加新的十个字节。
如果你想删除并且不想添加任何东西,然后复制到新文件,除了十个字节。
如果您只想添加,请将流位置移动到 end ,写入十个字节。
你需要fseek()