更改一行,重写整个文件?

Change one line, rewrite whole file?

关于文件系统如何工作的简单问题。

如果我在 100MB 的 .txt 文件中更改一行,文件系统是否会失效并重写整个 100MB 的文件?

如果我加一行呢? (和文件大小变化)

谢谢。

文件系统没有写入文件中间的概念——它只知道如何追加到文件末尾。在C中,如果要向文件中间写入数据,需要manually move forward all the data past the point at which you want to write,然后将新字符写入space。

在执行此操作时,文件系统可能必须重新排列文件的某些部分,例如,如果您超出了存储该文件部分的磁盘块的大小。因此,所有 在您向中间添加文本 的点和之后的所有内容都必须是 re-written,但是 是 re-written 取决于文件系统和文件在磁盘上的排列方式。

TL;DR 这取决于文件系统以及文件在磁盘上的存储方式。