用C ++擦除部分文件的最快方法

时间:2011-08-22 19:03:22

标签: c++ file stream

我想知道在c ++中删除部分文件的最快方法是什么。

我知道写第二个文件的方法并跳过你想要的部分。但是我认为使用大文件时速度很慢。

数据库系统如何快速删除记录呢?

3 个答案:

答案 0 :(得分:4)

数据库保留索引,其中元数据列出文件的哪些部分有效,哪些部分无效。要删除数据,只需更新索引以标记该部分无效,并且根本不需要更改主文件内容。

答案 1 :(得分:1)

数据库系统通常只将已删除的记录标记为已删除,而不会物理恢复未使用的空间。他们稍后可能会重用已删除记录占用的空间。这就是他们可以快速删除部分数据库的原因。

快速删除文件的一部分的能力取决于您要删除的文件部分。如果要删除的文件部分位于文件末尾,则可以使用OS调用截断文件。

从中间删除文件的一部分可能很耗时。您可以选择向前移动文件的其余部分,或者将整个文件复制到新位置,跳过已删除的部分。无论哪种方式对于大文件来说都是耗时的。

答案 2 :(得分:0)

我所知道的最快的方法是将数据文件作为持久内存映射文件打开,并简单地移动到您不需要的部分。比移动到第二个文件要快,但对于大文件仍然不会太快。