当应用程序保存大文件时磁盘会发生什么

当应用程序保存大文件时磁盘会发生什么

我很好奇,当我们处理需要经常保存的文件(例如 doc、pptx)时,当我们按下保存按钮时磁盘会发生什么?

我在想,原始文件内容应该在磁盘中处于对齐状态,假设我们在文件中的某个位置插入一个字符并保存它,我能想到的最天真的方式就是擦除所有字符磁盘中的旧数据并写入全部如果文件内容很小的话还可以,但是如果文件很大,比如100MB,那就太低效了。

就我而言,我需要经常保存大型pdf文件(添加突出显示和注释后),当我们保存这样的文件时,计算机究竟会做什么?

答案1

一切都取决于所使用的程序。

旧的 MS Office 创建了一个新文件并在正常保存时将其重命名,但它有一个快速保存选项,该选项会将“覆盖”信息附加到现有文件,这将更改以前加载的信息(例如替换 X 行中的单词) ,字符位置 Y)

因此,有些程序将简单地创建一个新文件并替换,其他程序直接编辑文件位置,而其他程序则像数据库一样工作,可以更改文件结构(空闲块,添加新块)以匹配所需的内容。然后你有一个混合,有些有更复杂的设置,比如保存到多个组件的文件(如ODF文件,它只是一个zip),更改每个需要的组件,然后构建一个新的合并文档或仅更新更改的组件(就像更新 zip 中的文件一样)

因此,没有放之四海而皆准的方法,更复杂的程序通常使用类似数据库的结构,它可以移动块,并且内部结构与实际格式分离。那些文件格式与文档结构非常匹配的文件,通常重新创建和重命名文件比较简单。

有些程序会改变它们的行为,例如 vim 会改变文件较小时的工作方式(在临时文件中工作,因此基本上重新创建和移动)和大文件(直接更改原始文件,没有备份和其他限制)

IIRC、PDF 有几个层,其中几个层可以像“数据库”一样直接更改,而无需接触其他部分

相关内容