我正在阅读this问题和this问题的答案。将文件与C数组进行比较如果我们想从C数组的中间删除一些元素,我们必须移动所有其他元素,因此需要花费很多时间。但是如果我们想要删除前几个项目或最后几个项目,我们可以只更改指针并释放删除的元素,几乎没有时间,并且它与数组的长度无关。我想知道为什么没有这样的方法来截断文件。我想也许在文件的开头或结尾有一些关于文件的元数据导致问题,但如果是这种情况,我认为它必须在文件的开头或结尾,所以我们必须能够删除一些从开始和结束中的至少一个这么快的行。但似乎这是不可能的。这是为什么?我在这里缺少什么?
我需要这个,因为我有一个10GB的文件,我必须逐行删除它的开头或结尾,直到它为空。我在ubuntu 16.04上,但我很想知道其他操作系统中是否还有其他解决方案。
答案 0 :(得分:1)
这是一个非常简单的答案,但文件通常通过“页面/块”存储在磁盘上。它有一定的字节数。因此从理论上讲,删除确切的页面/块大小会相对容易。因为afaik所有块都被完全填充(除了最后一个)。但是,在实践中,使用它的可能性非常低,应该从文件的开头删除确切的字节数。
对于文件的末尾,它会更容易,但在这种情况下,它不会经常发生,因此没有“通用”#39;方法是为它实现的。