为什么Windows将新创build的文件的“创build时间”属性设置为旧时间?

尝试这个我发现了一个奇怪的问题:

  1. 删除一个旧文件。
  2. 创build一个新文件并将其命名为旧文件。

然后将新文件的“创build时间”属性设置为旧文件的“创build时间”。 为什么会发生? 如何?

Solutions Collecting From Web of "为什么Windows将新创build的文件的“创build时间”属性设置为旧时间?"

这是由于文件系统隧道 ,正如Raymond Chen解释的:

“为什么隧道存在?

使用某个程序编辑现有文件并保存时,由于您正在编辑文件而不是创建新文件,因此您希望保留原始创建时间戳。 但在内部,许多程序通过执行保存,删除和重命名操作(如链接文章中列出的操作)的组合来保存文件,并且在没有隧道的情况下,文件的创建时间似乎会改变,即使从最终用户的观点,没有文件被创建。

作为隧道重要性的另一个例子,考虑一下文件“File with long name.txt”,它的简称是“FILEWI〜1.TXT”。 您将此文件加载到不能识别长文件名的程序中并保存。 它删除旧的“FILEWI〜1.TXT”,并创建一个新的同名。 没有隧道,文件的关联长名称将会丢失。 这个文件名不是一个友好的长名字,而是被腐蚀的标记损坏了。 不好。”

NT文件系统在您认为是的时候不会删除文件。 在NT文件系统上删除文件时,操作系统只会将文件占用的磁盘空间标记为可用。 直到另一个文件被写入磁盘上的该位置,该文​​件才会被真正删除。

至于为什么Windows会认为它是相同的确切文件,我相信这是由于这个事实,当你删除它的文件是空的,所以创建一个新的文件在相同的名称和相同的(空)内容的位置使Windows认为它实际上是相同的文件。 我会认为这是一个错误。

作为一个侧面说明,Windows处理文件这种方式删除的事实是您能够使用文件恢复实用程序恢复已删除的文件的原因。