我一直在四处寻找个人项目的解决方案(阅读:编码实验),但似乎没有什么合适的。说实话,我什至不知道这是否可能。
现在,根本没有办法根据整个文件来执行此操作。任何基于写入没有前 n 个字节的新文件的任何操作,即使它已就位,显然也行不通。我唯一能想到的就是以某种方式告诉文件系统文件的开头现在更远,并擦除它的开头。
但就像我说的,我什至不确定这是否可能。
答案1
当您从文件中删除字节时,您必须重写它。这将是 O(L) 时间,其中 L 是文件的长度。在正常的文件系统中你永远无法实现 O(n)。
当 n 可以被文件系统块大小整除时,您可能会遇到这种情况,< O(n)
因为此操作只会从目录条目中删除一些保留的 inode。 (在理想情况下,程序正是这样做的!)