我想知道在c++中擦除部分文件的最快方法是什么
我知道写第二个文件的方法,跳过你想要的部分。但是我认为当你处理大文件时速度很慢。
那数据库系统呢,他们怎么能这么快删除记录?数据库保存一个索引,其中的元数据列出了文件的哪些部分有效,哪些部分无效。要删除数据,只需更新索引以标记该部分无效,并且根本不需要更改主文件内容。
数据库系统通常只是将已删除的记录标记为已删除,而不物理地恢复未使用的空间。它们以后可能重用被删除的记录所占用的空间。这就是为什么他们可以快速删除部分数据库。
能否快速删除文件的某一部分取决于您希望删除的文件的哪一部分。如果要删除的文件部分位于文件的末尾,则可以使用操作系统调用截断文件。
从中间删除文件的一部分可能会很耗时。您可以选择向前移动文件的其余部分,或者将整个文件复制到新位置,跳过已删除的部分。
我知道最快的方法是打开数据文件作为持久化内存映射文件,并简单地移动您不需要的部分。会比移动到第二个文件快,但是对于大文件还是不会太快。