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

Filesystems 更改一行,重写整个文件?,filesystems,Filesystems,关于文件系统如何工作的简单问题 如果我更改100MB.txt文件中的一行,文件系统是否会无效并重写整个100MB文件 如果我加一行呢?(和文件大小更改) 谢谢。文件系统没有写入文件中间的概念——它只知道如何追加到文件的结尾。在C语言中,如果要将数据写入文件中间,则需要将新字符写入新创建的空间 在执行此操作时,文件系统可能必须重新排列文件的某些部分,例如,如果您超过了存储该文件的磁盘块的大小。因此,在向中间添加文本的位置前后的所有内容都必须重新写入,但写入位置取决于文件系统和磁盘上文件的排列 TL

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

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

如果我加一行呢?(和文件大小更改)


谢谢。

文件系统没有写入文件中间的概念——它只知道如何追加到文件的结尾。在C语言中,如果要将数据写入文件中间,则需要将新字符写入新创建的空间

在执行此操作时,文件系统可能必须重新排列文件的某些部分,例如,如果您超过了存储该文件的磁盘块的大小。因此,在向中间添加文本的位置前后的所有内容都必须重新写入,但写入位置取决于文件系统和磁盘上文件的排列


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

您使用的是什么文件系统?我不认为任何人会重写整个文件,但根据文件系统和存储介质的不同,他们可能会被迫重写/移动某些部分。@wolfson我就是这么想的。。。通用文件系统,如ext xfsThanks。应该有一个漂亮的方法来重新排列更新的文件。