在 O(n) 时间内删除文件的前 n 个字节

在 O(n) 时间内删除文件的前 n 个字节

我一直在四处寻找个人项目的解决方案(阅读:编码实验),但似乎没有什么合适的。说实话,我什至不知道这是否可能。

现在,根本没有办法根据整个文件来执行此操作。任何基于写入没有前 n 个字节的新文件的任何操作,即使它已就位,显然也行不通。我唯一能想到的就是以某种方式告诉文件系统文件的开头现在更远,并擦除它的开头。

但就像我说的,我什至不确定这是否可能。

答案1

当您从文件中删除字节时,您必须重写它。这将是 O(L) 时间,其中 L 是文件的长度。在正常的文件系统中你永远无法实现 O(n)。

当 n 可以被文件系统块大小整除时,您可能会遇到这种情况,< O(n)因为此操作只会从目录条目中删除一些保留的 inode。 (在理想情况下,程序正是这样做的!)

相关内容